我想创建一个MKPolygon
以显示在MKMapView
上。我的问题是我无法弄清楚该怎么做。
我知道要创建MKPolygon
,我必须创建一堆MKMapPoint
结构并将它们放入数组中并调用类方法polygonWithPoints
。
我的问题是我有一个NSArray
,其中包含具有CLLocation
和coordinate.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数组中的每个项目。然后调用polygonWithCoordinates
或polygonWithPoints
。
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/