我想创建一个MKPolygon以显示在MKMapView上。我的问题是我无法弄清楚该怎么做。

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

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

如何将其一一转换为MKMapPoint结构?

最佳答案

如果您有一个包含坐标的对象的NSArray,则使用polygonWithCoordinates:count:方法而不是polygonWithPoints:count:会更容易。
polygonWithCoordinates:count:方法接受CLLocationCoordinate2D结构的C数组。 coordinate对象中的CLLocation属性也是CLLocationCoordinate2D

如果仍要使用polygonWithPoints:count:,则可以使用MKMapPointForCoordinate函数将coordinate中的CLLocation属性转换为MKMapPoint

无论使用哪种方法,首先要创建一个具有适当结构的C数组,循环遍历NSArray以设置C数组中的每个项目。然后调用polygonWithCoordinatespolygonWithPoints

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

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

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

关于ios - 将CLLocation对象转换为MKMapPoint结构,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9309861/

10-13 03:30