本文介绍了使用 Parse.com 未显示引脚的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我正在尝试将图钉添加到我在其中一个类中创建的几个位置,称为位置".
I am trying to add pins to a couple of locations I created in one of my classes, which is called "Places".
这些位置的键被定义为places_coordinates".
The key to these locations is defined as "places_coordinates".
我尝试按如下方式放置这些引脚:
I tried to place those pins as follows:
View Controller.h
#import <UIKit/UIKit.h>
#import <MapKit/MapKit.h>
#import <CoreLocation/CoreLocation.h>
#import <Parse/Parse.h>
@interface ViewController : UIViewController<CLLocationManagerDelegate, MKMapViewDelegate>
@property (nonatomic, retain) CLLocationManager *locationManager;
@property(nonatomic, strong) MKPinAnnotationView *geoPointAnnotation;
@property(nonatomic, strong)MKPointAnnotation *annotation;
@property(nonatomic, strong)CLLocation *location;
@property (nonatomic, strong) PFObject *detailItem;
@property (weak, nonatomic) IBOutlet MKMapView *appleMap;
@end
ViewController.m
- (void)viewDidLoad {
[super viewDidLoad];
if (nil == self.locationManager){
self.locationManager = [[CLLocationManager alloc] init];
self.locationManager.delegate = self;
//Configure Accuracy depending on your needs, default is kCLLocationAccuracyBest
self.locationManager.desiredAccuracy = kCLLocationAccuracyKilometer;
// Set a movement threshold for new events.
self.locationManager.distanceFilter = 500; // meters
[self.locationManager startUpdatingLocation];
[self.locationManager requestWhenInUseAuthorization];
[self.locationManager requestAlwaysAuthorization];
}
self.appleMap.delegate = self;
// Map will show current location
self.appleMap.showsUserLocation = YES;
// Maps' opening spot
self.location = [self.locationManager location];
CLLocationCoordinate2D coordinateActual = [self.location coordinate];
// Map's zoom
MKCoordinateSpan zoom = MKCoordinateSpanMake(0.010, 0.010);
// Create a region
MKCoordinateRegion region = MKCoordinateRegionMake(coordinateActual, zoom);
// Method which sets exibition method
[self.appleMap setRegion:region animated:YES];
//Map's type
self.appleMap.mapType = MKMapTypeStandard;
}
#pragma mark - Location Manager Callbacks
-(void)locationManager:(CLLocationManager *)manager didUpdateLocations:(NSArray *)locations{
[PFGeoPoint geoPointForCurrentLocationInBackground:^(PFGeoPoint *geoPoint, NSError *error) {
if (!error) {
// Create Object
PFObject *offersLocation = [PFObject objectWithClassName:@"Places"];
//Create a point for markers
PFGeoPoint *offersPoint = offersLocation[@"places_coordinate"];
// Check current Location
NSLog(@"%@", offersPoint);
// Create a query for Places of interest near current location
PFQuery *query = [PFQuery queryWithClassName:@"Places"];
[query whereKey:@"places_coordinate" nearGeoPoint:geoPoint withinKilometers:5.0];
NSLog(@"Query: %@",query);
// Limit the query
query.limit = 10;
// Store objects in the array
NSArray *offersArray = [query findObjects];
NSLog(@"Array: %@",offersArray);
if (!error) {
for (query in offersArray) {
self.annotation = [[MKPointAnnotation alloc]
init];
CLLocationCoordinate2D coord = {offersPoint.latitude, offersPoint.longitude};
self.annotation.coordinate = coord ;
[self.appleMap addAnnotation:self.annotation];
NSLog(@"Annotation: %@",self.annotation);
}
}
}
}];
}
#pragma mark - MKMapViewDelegate
-(MKAnnotationView *)mapView:(MKMapView *)mapView viewForAnnotation:(id<MKAnnotation>)annotation{
static NSString *MapViewAnnotationIdentifier = @"places_coordinate";
MKPinAnnotationView *pinOffers = [[MKPinAnnotationView alloc] initWithAnnotation:self.annotation reuseIdentifier:MapViewAnnotationIdentifier];
pinOffers.pinColor = MKPinAnnotationColorRed;
pinOffers.canShowCallout = YES;
pinOffers.animatesDrop = YES;
return pinOffers;
}
我的日志显示了 offerArray 中的所有优惠,但我没有找到在其中放置标记的方法.
My log is showing all offers inside the offersArray, but I am not finding a way of putting markers in it.
我还尝试了其他几个主题,但没有真正理解:
I also tried a couple of other topics, but did not really get it:
此致,
推荐答案
发生的事情是我的 for 循环没有正确构建.
What was happening was that my for loop was not built correctly.
应该是这样的:
...
if (!error) {
for (PFObject *offerObject in offersArray) {
PFGeoPoint *offerPoint = [offerObject objectForKey:@"coordenadas"];
MKPointAnnotation *geoPointAnnotation = [[MKPointAnnotation alloc]
init];
geoPointAnnotation.coordinate = CLLocationCoordinate2DMake(offerPoint.latitude, offerPoint.longitude);
[self.appleMap addAnnotation:geoPointAnnotation];
NSLog(@"Annotation: %@",geoPointAnnotation);
}
}
...
这篇关于使用 Parse.com 未显示引脚的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!