2009-08-26 13 views

Antwort

1

Ich habe Ideen aus diesem Blogpost verwendet, um dies zu erreichen. Es beinhaltet im Wesentlichen das Hinzufügen einer transparenten Ansicht über die Karte. Auf der Karte können Sie dann Standorte in Punkte in der Ansicht konvertieren. Lassen Sie mich wissen, wenn die Seite Ihnen nicht hilft und ich kann versuchen, ein Beispiel aus meinem Code auszugraben.

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

6

So wie ich Ihre Frage gerade lese ist, dass Sie wollen programmatisch das Polygon auf der Karte ziehen. Konsultieren Sie hierfür die Apple docs on MapKit.

Sie müssen keine transparenten Ansichten über die MapKit-Map (MKMapView) hinzufügen. Sie erstellen ein Overlay Objekt, in diesem Fall ein MKPolygon. (Im folgenden Beispiel wird die Variable map wird die MKMapView Instanz von View-Controller im Besitz sein, dass Sie diesen Code setzen 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]; 

Dann, wenn Sie das Aussehen (Farbe, Strich anpassen möchten, etc.) des Overlays, können Sie das MKMapViewDelegate Protokoll im view-Controller implementieren Sie haben, dass besitzt das MKMapView Objekt und bieten eine Implementierung von 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; 
} 

natürlich, immer daran denken, um tatsächlich die Karte zuweisen Delegate der Instanz auf Ihren View-Controller (MKMapViewDelegate), entweder im Interface Builder oder im Code (z. viewDidLoad).

+0

Und natürlich für Kreise würden Sie 'MKCircle' anstelle von' MKPolygon' verwenden – Nate

Verwandte Themen