J'essaie de tracer un mkpolygon sur un MkmapView dans iOS 4.0. J'ai un nsarray qui contient des objets personnalisés qui incluent des propriétés pour la latitude / la longitude. J'ai un échantillon de code ci-dessous:
- (void)viewDidLoad {
[super viewDidLoad];
dataController = [[DataController alloc] initWithMockData];
coordinateData = [dataController getCordData];
CLLocationCoordinate2D *coords = NULL;
NSUInteger coordsLen = 0;
/* How do we actually define an array of CLLocationCoordinate2d? */
MKPolygon *polygon = [MKPolygon polygonWithCoordinates:coords count:coordsLen];
[mapView addOverlay: polygon];
}
- (MKOverlayView *)mapView:(MKMapView *)mapView viewForOverlay:(id <MKOverlay>)overlay
{
MKPolygonView *polygonView = [[MKPolygonView alloc] initWithPolygon: routePolygon];
NSLog(@"Attempting to add Overlay View");
return polygonView;
}
4 Réponses :
La méthode PolygonWithcoordinates veut une gamme C de structs CLLOCOCOCOCORINATION2D. Vous pouvez utiliser Par exemple: P> masloc code> pour allouer la mémoire pour le tableau (et gratuit code> pour libérer la mémoire). Boucle à travers votre Nsarray et réglez-le chaque élément du tableau de struct. - (MKOverlayView *)mapView:(MKMapView *)mapView viewForOverlay:(id <MKOverlay>)overlay
{
MKPolygonView *polygonView = [[[MKPolygonView alloc] initWithPolygon:overlay] autorelease];
polygonView.lineWidth = 1.0;
polygonView.strokeColor = [UIColor redColor];
polygonView.fillColor = [UIColor greenColor];
return polygonView;
}
pour iOS 7.0 et plus tard, nous devrions utiliser mkpolygonrenderer code> au lieu de mkpolygonview code>,
coordonnéesArray; // Votre matrice contenant les coordonnées // Votre "coordinatesarray" est un tableau contenant le dictionnaire avec plusieurs valeurs de la latitude et des touches de longitude.
// espère que cela vous aide. P> p>
pour coordonnées dans JSON: p> lire les coordonnées: P> func mapView(_ mapView: MKMapView, rendererFor overlay: MKOverlay) -> MKOverlayRenderer {
if overlay is MKPolygon {
let polygonView = MKPolygonRenderer(overlay: overlay)
polygonView.fillColor = .black
polygonView.strokeColor = .red
polygonView.lineWidth = 2.0
return polygonView
return MKOverlayRenderer()
}