2009-08-26 18 views

risposta

1

Ho usato idee da questo post sul blog di persone per realizzare questo. Fondamentalmente implica l'aggiunta di una vista trasparente sulla mappa. La mappa ti consente quindi di convertire le posizioni in punti sulla vista. Fammi sapere se il sito non ti aiuta e posso provare a trovare un esempio dal mio codice.

http://spitzkoff.com/craig/?p=65

6

Il modo in cui sto leggendo la tua domanda è che si desidera programmazione disegnare il poligono sulla mappa. Per questo, consulta lo Apple docs on MapKit.

Non è necessario aggiungere viste trasparenti sulla mappa MapKit (MKMapView). Si crea un oggetto di sovrapposizione , in questo caso uno MKPolygon. (Nell'esempio seguente, la variabile map sarà la MKMapView istanza di proprietà del controller della vista che si inserisce questo codice in):

CLLocationCoordinate2D points[4]; 

points[0] = CLLocationCoordinate2DMake(41.000512, -109.050116); 
points[1] = CLLocationCoordinate2DMake(41.002371, -102.052066); 
points[2] = CLLocationCoordinate2DMake(36.993076, -102.041981); 
points[3] = CLLocationCoordinate2DMake(36.99892, -109.045267); 

MKPolygon* poly = [MKPolygon polygonWithCoordinates:points count:4]; 
poly.title = @"Colorado"; 

[map addOverlay:poly]; 

Poi, se si desidera personalizzare l'aspetto (colori, ictus, ecc) della sovrapposizione, è implementare il protocollo MKMapViewDelegate nel controller della vista che avete che possiede l'oggetto MKMapView e fornire un'implementazione di mapView:viewForOverlay:

- (MKOverlayView *)mapView:(MKMapView *)mapView viewForOverlay:(id <MKOverlay>)overlay 
{ 
    if ([overlay isKindOfClass:[MKPolygon class]]) 
    { 
     MKPolygonView* aView = [[[MKPolygonView alloc] initWithPolygon:(MKPolygon*)overlay] autorelease]; 

     aView.fillColor = [[UIColor cyanColor] colorWithAlphaComponent:0.2]; 
     aView.strokeColor = [[UIColor blueColor] colorWithAlphaComponent:0.7]; 
     aView.lineWidth = 3; 

     return aView; 
    } 

    return nil; 
} 

Naturalmente, ricordate sempre di assegnare in realtà la mappa istanza delegata al proprio controller di visualizzazione (MKMapViewDelegate), nel builder dell'interfaccia o nel codice (ad es. viewDidLoad).

+0

E, ovviamente, per i cerchi, si usa 'MKCircle' invece di' MKPolygon' – Nate

Problemi correlati