Преобразование объектов CLLocation в структуры MKMapPoint - PullRequest
1 голос
/ 16 февраля 2012

Я хотел бы создать MKPolygon для отображения на MKMapView. Моя проблема в том, что я не могу понять, как это сделать.

Я знаю, что для создания MKPolygon мне нужно создать группу MKMapPoint структур, поместить их в массив и вызвать метод класса polygonWithPoints.

Моя проблема в том, что у меня есть NSArray, содержащий CLLocation объекты, которые имеют свойства coordinate.latitude и coordinate.longitude.

Как мне преобразовать его один за другим в MKMapPoint структуру?

1 Ответ

2 голосов
/ 16 февраля 2012

Если у вас есть NSArray объектов, содержащих координаты, будет проще использовать метод polygonWithCoordinates:count: вместо polygonWithPoints:count:.

Метод polygonWithCoordinates:count: принимает массив C со структурой CLLocationCoordinate2D. Свойство coordinate в объекте CLLocation также является CLLocationCoordinate2D.

Если вы все еще хотите использовать polygonWithPoints:count:, вы можете использовать функцию MKMapPointForCoordinate для преобразования свойства coordinate в CLLocation в MKMapPoint.

Используя любой из этих методов, вы сначала создаете массив C соответствующей структуры, перебирая NSArray для установки каждого элемента в массиве C. Затем позвоните polygonWithCoordinates или polygonWithPoints.

Этот ответ содержит пример кода с использованием polygonWithCoordinates. В этом примере вы изменили бы две строки в цикле for на:

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

Не забудьте реализовать метод делегата viewForOverlay (и убедиться, что свойство delegate представления карты установлено).

...