我正在使用IOS SDK 5.1和使用MapKit开发应用程序。我有以下代码在从api检索数据后在地图上放置注释。
- (void)placeAnnotationsOnMap:(NSString *)responseString {
for (id<MKAnnotation> annotation in _mapView.annotations) {
[_mapView removeAnnotation:annotation];
}
NSData *jsonData = [responseString dataUsingEncoding:NSUTF8StringEncoding];
NSError *e = nil;
NSArray *jsonArray =
[NSJSONSerialization
JSONObjectWithData: jsonData
options: kNilOptions
error: &e];
for(NSArray *cache in jsonArray ){
for(NSDictionary *item in jsonArray) {
NSLog(@"Item: %@", item);
NSString * comment = [item objectForKey:@"comment"];
NSNumber * latitude = [item objectForKey:@"locationLat"];
NSNumber * longitude = [item objectForKey:@"locationLong"];
NSString * numCachers = [item objectForKey:@"numCachers"];
CLLocationCoordinate2D coordinate;
coordinate.latitude = latitude.doubleValue;
coordinate.longitude = longitude.doubleValue;
CustomAnnotation *cacheAnnotation = [[CustomAnnotation alloc] initWithTitle:comment numCachers:numCachers coordinate:coordinate];
[_mapView addAnnotation:cacheAnnotation];
}
}
}
我的viewForAnnotation方法。
- (MKAnnotationView *)mapView:(MKMapView *)mapView viewForAnnotation:(id <MKAnnotation>)annotation {
static NSString *identifier = @"CustomAnnotation";
CLLocationCoordinate2D coord = [annotation coordinate];
MKPinAnnotationView *annotationView = (MKPinAnnotationView *) [_mapView dequeueReusableAnnotationViewWithIdentifier:identifier];
if (annotationView == nil) {
annotationView = [[MKPinAnnotationView alloc] initWithAnnotation:annotation reuseIdentifier:identifier];
} else {
annotationView.annotation = annotation;
}
annotationView.enabled = YES;
annotationView.canShowCallout = YES;
return annotationView;
}
问题是注释出现在错误的地方。我目前从我的后端服务返回一个位置,该服务具有华盛顿特区白宫的纬度经度。问题在于注释出现在中国。
即使我将lat long硬编码为38.8977,77.0366(基本上没有从json响应中解析它),它在中国出现。
对我做错了什么的想法?
答案 0 :(得分:1)
有趣的是,似乎所有其他地方都运作良好。也许在白宫上放下针脚有一些安全限制?
更新......安娜在下面是正确的! :)
答案 1 :(得分:0)
MapKit中坐标的表示是错误的,但我确信它们在CLLocation坐标中是正确的