Domanda

Vorrei creare un MKPolygon alla visualizzazione su un MKMapView. Il mio problema è che io non sono in grado di capire come farlo.

So che per creare un MKPolygon devo creare un gruppo di struct MKMapPoint e metterli in un array e chiamare il metodo della classe polygonWithPoints.

Il mio problema è che ho un NSArray contenente oggetti CLLocation che hanno coordinate.latitude e coordinate.longitude proprietà.

Come faccio a convertire uno per uno a una struct MKMapPoint?

È stato utile?

Soluzione

Se si dispone di un NSArray di oggetti contenenti coordinate, sarà più facile da usare il metodo polygonWithCoordinates:count: invece di polygonWithPoints:count:.

Il metodo polygonWithCoordinates:count: accetta una matrice C di struct CLLocationCoordinate2D. La proprietà coordinate in un oggetto CLLocation è anche un CLLocationCoordinate2D.

Se si desidera continuare a utilizzare polygonWithPoints:count:, è possibile utilizzare la funzione di MKMapPointForCoordinate per convertire la proprietà coordinate nella CLLocation a un MKMapPoint.

Con entrambi i metodi è innanzitutto creare una matrice C della struct appropriata, scorrere l'NSArray per impostare ogni elemento dell'array C. Quindi chiamare polygonWithCoordinates o polygonWithPoints.

Questa risposta ha un esempio di codice utilizzando polygonWithCoordinates. In questo esempio, è necessario modificare le due righe nel ciclo for a:

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

Non dimenticare di implementare il metodo viewForOverlay delegato (e assicurarsi di proprietà delegate della vista mappa è impostato).

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top