将注释从KML文件添加到MKMapView

时间:2015-01-20 21:56:10

标签: ios mkmapview mkannotation cllocation

我正在尝试将数据从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];

}

1 个答案:

答案 0 :(得分:1)

坐标的NSLog的结果是:

  

COORDS = -73.96300100000001,40.682846,0

所以看起来坐标是经度,纬度顺序,但CLLocationCoordinate2DMake函数需要纬度,经度。

除非坐标假设在南极洲而不是纽约市,否则请尝试:

annotation.coordinate = CLLocationCoordinate2DMake(
                           [coordinates[1] doubleValue], 
                           [coordinates[0] doubleValue]);


另请注意,您应将floatValue更改为doubleValue以获得更准确的展示位置(它还会与CLLocationDegrees的同义词匹配double