我正在尝试将数据从KML文件加载到MKMapView。我能够将数据解析成数组,现在我正在尝试在地图上为每个项目创建注释。
使用下面的代码,我能够在地图上创建注释,但位置不正确:
Parser *parser = [[Parser alloc] initWithContentsOfURL:url];
parser.rowName = @"Placemark";
parser.elementNames = @[@"name", @"address", @"coordinates", @"description"];
[parser parse];
//parseItem is an array returned with all data after items are parsed.
for (NSDictionary *locationDetails in parser.parseItems) {
MKPointAnnotation *annotation = [[MKPointAnnotation alloc] init];
annotation.title = locationDetails[@"name"];
NSArray *coordinates = [locationDetails[@"coordinates"] componentsSeparatedByString:@","];
annotation.coordinate = CLLocationCoordinate2DMake([coordinates[0] floatValue], [coordinates[1] floatValue]);
[self.mapView addAnnotation:annotation];
}
答案 0 :(得分:1)
坐标的NSLog的结果是:
COORDS = -73.96300100000001,40.682846,0
所以看起来坐标是经度,纬度顺序,但CLLocationCoordinate2DMake
函数需要纬度,经度。
除非坐标假设在南极洲而不是纽约市,否则请尝试:
annotation.coordinate = CLLocationCoordinate2DMake(
[coordinates[1] doubleValue],
[coordinates[0] doubleValue]);
另请注意,您应将floatValue
更改为doubleValue
以获得更准确的展示位置(它还会与CLLocationDegrees
的同义词匹配double
。