2015-01-20 10 views
1

KML 파일의 데이터를 MKMapView로로드하려고합니다. 배열로 데이터를 구문 분석 할 수 있었고 이제는 각 항목의지도에 주석을 작성하려고합니다. 아래의 코드를 사용하여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

'annotation.title = ...'줄 다음에는이 NSLog를 추가하고 그 내용을 확인하십시오 :'NSLog (@ "coords = % @", locationDetails [@ "좌표"]), ' – Anna

+0

좌표 : 구문 분석 데이터에서 즉 : coords = -73.9630010000000140.682846,0 – jumpr3

+1

위도, 위도 순서로오고 있지만 CLLocationCoordinate2DMake 함수를 위도, 경도 소요 좌표가 보인다. 'CLLocationCoordinate2DMake ([좌표 [1] doubleValue], [좌표 [0] doubleValue])'를 시도하십시오. (더 정확한 배치를 위해 float를 double로 변경하십시오.) – Anna

답변

1

좌표의 NSLog의 결과였다

좌표 = 좌표는 위도, 경도 순서하지만 CLLocationCoordinate2DMake 능오고있는 것처럼 -73.9630010000000140.682846,0

그래서 그것은 본다 n은 위도, 경도를 취합니다. 좌표가 대신 뉴욕시의 남극 대륙에 있어야을 가정 하지 않는 한

, 시도 : 그것은 또한 일치합니다

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


은 또한 (당신이 더 정확한 배치를 위해 doubleValuefloatValue을 변경해야합니다주의 유형 CLLocationDegreesdouble의 동의어입니다.