2012-02-16 3 views
1

MKMapView에 표시 할 MKPolygon을 만들고 싶습니다. 내 문제는 내가 어떻게하는지 알아낼 수 없다는 것이다.CLLocation 객체를 MKMapPoint 구조체로 변환

MKPolygon을 만들려면 구조체 MKMapPoint을 만들고 배열에 넣고 클래스 메서드 polygonWithPoints을 호출해야한다는 것을 알고 있습니다.

내 문제는 및 coordinate.longitude 속성을 가진 CLLocation 개체를 포함하는 NSArray 개체가 있다는 것입니다.

구조체를 하나씩 MKMapPoint 구조체로 변환하는 방법은 무엇입니까?

답변

2

좌표가 포함 된 개체가 NSArray 인 경우 polygonWithPoints:count: 대신 polygonWithCoordinates:count: 메서드를 사용하는 것이 더 쉽습니다.

polygonWithCoordinates:count: 메서드는 CLLocationCoordinate2D 구조체의 C 배열을 허용합니다. CLLocation 개체의 coordinate 속성은 CLLocationCoordinate2D입니다. 당신은 여전히 ​​polygonWithPoints:count:를 사용하려면

, 당신은 MKMapPointCLLocationcoordinate 속성을 변환 할 MKMapPointForCoordinate 기능을 사용할 수 있습니다.

두 방법 중 하나를 사용하려면 먼저 적절한 구조체의 C 배열을 만들고 NSArray을 반복하여 C 배열의 각 항목을 설정합니다. 그런 다음 polygonWithCoordinates 또는 polygonWithPoints으로 전화하십시오.

This answer의 코드 예는 polygonWithCoordinates입니다. 이 예에서, 당신은에 for 루프의 두 줄을 변경합니다 :

CLLocation *coordObj = (CLLocation *)[coordinateData objectAtIndex:i]; 
coords[i] = coordObj.coordinate; 

viewForOverlay 대리자 메서드를 구현하는 것을 잊지 마십시오을 (그리고지도보기의 delegate 속성이 설정되어 있는지 확인).