将CLLocation对象转换为MKMapPoint结构

时间:2012-02-16 10:44:31

标签: ios ios5 mapkit core-location mkoverlay

我想在MKPolygon上创建MKMapView。我的问题是,我无法弄清楚如何做到这一点。

我知道要创建MKPolygon我必须创建一堆MKMapPoint结构并将它们放入数组并调用类方法polygonWithPoints

我的问题是,我有NSArray个包含CLLocationcoordinate.latitude属性的coordinate.longitude个对象。

如何将其逐个转换为MKMapPoint结构?

1 个答案:

答案 0 :(得分:2)

如果您有NSArray个包含坐标的对象,则使用polygonWithCoordinates:count:方法而不是polygonWithPoints:count:会更容易。

polygonWithCoordinates:count:方法接受CLLocationCoordinate2D结构的C数组。 coordinate对象中的CLLocation属性也是CLLocationCoordinate2D

如果您仍想使用polygonWithPoints:count:,则可以使用MKMapPointForCoordinate功能将coordinate中的CLLocation属性转换为MKMapPoint。< / p>

使用任一方法,首先创建相应结构的C数组,循环遍历NSArray以设置C数组中的每个项目。然后拨打polygonWithCoordinatespolygonWithPoints

This answer有一个使用polygonWithCoordinates的代码示例。在该示例中,您可以将for循环中的两行更改为:

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

不要忘记实现viewForOverlay委托方法(并确保设置了地图视图的delegate属性)。