map with photos like Instagram Photo Map

前端 未结 1 1953
不思量自难忘°
不思量自难忘° 2020-12-18 16:15

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

Photo Map: http://i.stack.imgur.com/B0wDa.jpg

How can I get the Image (loaded fro

相关标签:
1条回答
  • 2020-12-18 16:34

    With the help of this discussion: Custom annotations with same image

    I came out with this: My Photo Map

    Here's the code:

    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
    
    0 讨论(0)
提交回复
热议问题