地图与Instagram照片地图等照片 [英] map with photos like Instagram Photo Map

查看:91
本文介绍了地图与Instagram照片地图等照片的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试使用Instagrams Photo Map创建一张带有照片的地图。

I'm trying to create a Map with photos kind of like Instagrams Photo Map.

图片地图: http:// i .stack.imgur.com / B0wDa.jpg

如何将图像(从Parse加载)到注释,如上面的屏幕截图?

How can I get the Image (loaded from Parse), to the annotation, like in the screenshot above?

这是我到目前为止所得到的:
MapViewController.m

And this is what I got so far: MapViewController.m

[PFGeoPoint geoPointForCurrentLocationInBackground:^(PFGeoPoint *geoPoint, NSError *error) {
        PFQuery *query = [PFQuery queryWithClassName: @"HomePopulation"];
        [query whereKey:@"geopoint" nearGeoPoint:geoPoint withinKilometers:3000];
        [query findObjectsInBackgroundWithBlock:^(NSArray *objects, NSError *error) {
            if (!error) {
                for (PFObject *object in objects) {
                     PFGeoPoint *thePoint = [object objectForKey:@"geopoint"];
                    latitude = thePoint.latitude;
                    longitude = thePoint.longitude;

                    NSLog(@" Hej %f, %f", latitude, longitude);
                    CLLocationCoordinate2D annotationCoordinate = CLLocationCoordinate2DMake(latitude, longitude);

                    Annotation *annotation = [[Annotation alloc] init];
                    annotation.coordinate = annotationCoordinate;
                    annotation.title = [object objectForKey:@"discovery"];
                    annotation.subtitle = [object objectForKey:@"location"];

                    PFFile *image = [object objectForKey:@"imageFile"];
                    annotation.imageView.file = image;
                    [annotation.imageView loadInBackground];

                    [self.theMap addAnnotation:annotation];

                    [self.theMap setCenterCoordinate:annotation.coordinate animated:YES];

                    [self setNeedsStatusBarAppearanceUpdate];
                }
            }
        }];
    }];

任何帮助表示赞赏。
Marko

Any help appreciated. Marko

推荐答案

在此讨论的帮助下:自定义注释具有相同的图像

我出来了:< img src =https://i.stack.imgur.com/vrlGV.pngalt =我的照片地图>

I came out with this:

以下是代码:

MapViewController.h
#import <UIKit/UIKit.h>
#import <MapKit/MapKit.h>
#import <Parse/Parse.h>


@interface MapViewController : UIViewController <MKMapViewDelegate>

@property double latitude;
@property double longitude;


@end

MapViewController.m
- (void)viewDidLoad
{
    [super viewDidLoad];

    [self.navigationController setNavigationBarHidden:YES animated:YES];
    self.theMap.delegate = self;
    self.theMap.showsUserLocation = YES;

    [PFGeoPoint geoPointForCurrentLocationInBackground:^(PFGeoPoint *geoPoint, NSError *error) {
        PFQuery *query = [PFQuery queryWithClassName: @"HomePopulation"];
        [query whereKey:@"geopoint" nearGeoPoint:geoPoint withinKilometers:1000];
        [query findObjectsInBackgroundWithBlock:^(NSArray *objects, NSError *error) {
            if (!error) {
                for (PFObject *object in objects) {
                     PFGeoPoint *thePoint = [object objectForKey:@"geopoint"];
                    latitude = thePoint.latitude;
                    longitude = thePoint.longitude;

                    NSLog(@" Hej %f, %f", latitude, longitude);
                    CLLocationCoordinate2D annotationCoordinate = CLLocationCoordinate2DMake(latitude, longitude);

                    Annotation *annotation = [[Annotation alloc] init];
                    annotation.coordinate = annotationCoordinate;
                    annotation.title = [object objectForKey:@"discovery"];
                    annotation.subtitle = [object objectForKey:@"location"];
                    annotation.objectID = object.objectId;

                    [self.theMap addAnnotation:annotation];
                }
            }
        }];
    }];

    //[self.theMap reloadInputViews];
}

- (MKAnnotationView *) mapView:(MKMapView *)mapView viewForAnnotation:(id<MKAnnotation>)annotation
{
    static NSString *identifier = @"theLocation";
    if ([annotation isKindOfClass:[Annotation class]]) {
        MKPinAnnotationView *annotationView = (MKPinAnnotationView *)[self.theMap dequeueReusableAnnotationViewWithIdentifier:identifier];

        if (annotationView == nil) {
            annotationView = [[MKPinAnnotationView alloc] initWithAnnotation:annotation reuseIdentifier:identifier];
        } else {
            annotationView.annotation = annotation;
        }
        annotationView.enabled = YES;
        //annotationView.canShowCallout = YES;

        UIImageView *imageView = [[UIImageView alloc] initWithFrame:CGRectMake(-40, -100, 100, 100)];
        imageView.contentMode = UIViewContentModeScaleAspectFit;

        NSString *id = [(Annotation *)annotationView.annotation objectID];

        PFQuery *query = [PFQuery queryWithClassName:@"HomePopulation"];
        [query getObjectInBackgroundWithId:[NSString stringWithFormat:@"%@", id] block:^(PFObject *object, NSError *error) {
            PFFile *file = [object objectForKey:@"imageFile"];
            [file getDataInBackgroundWithBlock:^(NSData *data, NSError *error) {
                imageView.image = [UIImage imageWithData:data];
            }];
        }];
        annotationView.image = [UIImage imageNamed:@"pointer"];
        [annotationView addSubview:imageView];

        return annotationView;
    }
    return nil;
}

Annotation.h
#import <Foundation/Foundation.h>
#import <MapKit/MapKit.h>
#import <Parse/Parse.h>

@interface Annotation : NSObject <MKAnnotation>

@property (nonatomic) CLLocationCoordinate2D coordinate;
@property (nonatomic, copy) NSString *title;
@property (nonatomic, copy) NSString *subtitle;
@property (nonatomic, copy) NSString *objectID;


@end

这篇关于地图与Instagram照片地图等照片的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆