2013-03-13 9 views
7

Ich muss einen Kreis (wie bei MKCircle) auf einem GMSMapView anzeigen. Dies ist bei Verwendung von MKMapView und MKCircle einfach, MKCircle kann jedoch nicht mit GMSMapView verwendet werden. Irgendwelche Ideen?So zeigen Sie einen Kreis in GMSMapView an

Update:
Dies sind die aktuellen (18.03.2013) Optionen:
1. Eine Bodenmarkierung einen Kreis Bild enthält.
2. Ein Kreis mit mehreren Segmenten (Polylinie).

Edit:
3. Google hat einen GMSCircle (23.04.2013)

GMSGroundOverlayOptions *overlayOptions = [GMSGroundOverlayOptions options]; 
    overlayOptions.icon = [UIImage imageNamed:@"circle"]; 
    overlayOptions.position = touchMapCoordinate; 
    overlayOptions.bearing = 0; 
    overlayOptions.zoomLevel = 14.3; 
[mapView addGroundOverlayWithOptions:overlayOptions]; 

Für einen Kreis Bild 40x40 Pixel sieht es ok. (Radius beträgt ca. 100 m)

Kleine segmentierter Pfad Lösung:

GMSPolylineOptions *circle = [GMSPolylineOptions options]; 
    CGPoint touchPoint = [mapView.projection pointForCoordinate:touchMapCoordinate]; 
    GMSMutablePath *path = [GMSMutablePath path]; 

    CGPoint circlePoint; 

    for (int i = 0; i < 360; i++) 
    { 
     circlePoint.x = touchPoint.x + radius * cos(i*M_PI/180); 
     circlePoint.y = touchPoint.y + radius * sin(i*M_PI/180); 

     CLLocationCoordinate2D aux = [mapView.projection coordinateForPoint:circlePoint]; 
     [path addCoordinate:aux]; 
    } 

    circle.path = path; 
    circle.width = 1; 

    [mapView addPolylineWithOptions:circle]; 

EDIT: 08.05.2013

GMSCircle Lösung:

 CLLocationCoordinate2D circleCenter = CLLocationCoordinate2DMake(latitude, longitude); 
    GMSCircle *circ = [GMSCircle circleWithPosition:circleCenter 
            radius:1000]; 

    circ.fillColor = [UIColor blueColor]; 
    circ.strokeColor = [UIColor redColor]; 
    circ.strokeWidth = 5; 
    circ.map = mapView; 
+0

Können Sie veröffentlichen, was Sie bisher versucht? – Noich

+0

Ich habe keine Ahnung, wie man überhaupt anfängt. Ich habe darüber nachgedacht, mit GMSGroundOverlay und GMSGroundOverlayOptions ein Kreissymbol hinzuzufügen, aber das bedeutet, dass der Kreis immer einen bestimmten Radius hat. – Bogus

+0

Es kann nicht funktionieren für iOS 8 –

Antwort

1

Im Moment ist das SDK doesn Es werden keine Kreise unterstützt, aber es gibt eine Funktion zum Hinzufügen von Kreisen:

https://code.google.com/p/gmaps-api-issues/issues/detail?id=4971

In der Zwischenzeit könnten Sie vielleicht einen Kreis fälschen, indem Sie eine Polylinie mit mehreren kurzen Segmenten zeichnen?

+0

danke für die Idee! – Bogus

7

Es ist ein bisschen spät, da die Frage über ein Jahr alt ist, aber Google-Suchen führten mich hier, also dachte ich, ich würde dies aktualisieren. Nachwelt 4TW!

Es gibt jetzt eine GMSCircle die kann, soweit ich weiß, fast alles, was ein MKCircle kann.
Google's documentation on the GMSCircle. Verändern der Größe mit der Zoomstufe der Karte usw. Bitte ignorieren Sie den blauen Kreis in der Mitte

// Build a circle for the GMSMapView 
GMSCircle *geoFenceCircle = [[GMSCircle alloc] init]; 
geoFenceCircle.radius = 130; // Meters 
geoFenceCircle.position = SOME_CLLOCATION.coordinate; // Some CLLocationCoordinate2D position 
geoFenceCircle.fillColor = [UIColor colorWithWhite:0.7 alpha:0.5]; 
geoFenceCircle.strokeWidth = 3; 
geoFenceCircle.strokeColor = [UIColor orangeColor]; 
geoFenceCircle.map = mapView; // Add it to the map. 

Es ist sehr ähnlich, dass zu einem MKCircle (Overlay) verhält; Das ist der Benutzerstandort, der in der Kartenansicht angezeigt wird, und ich habe nur die gleiche Koordinate für den Mittelpunkt des GMSCircle verwendet.

Super einfach. Schauen Sie sich die Bilder:

Ein Zoom-Stufe: enter image description here

Und hier, wir sind ein bisschen herausgezoomt, um: enter image description here

+0

ist es möglich, Text über den Kreis zu zeichnen? –

+0

GMSOverlays haben eine Eigenschaft 'title', die verwendet werden kann, um bestimmten Markentypen Text hinzuzufügen.Wenn Sie das nicht bekommen, was Sie wollen, und dies ist etwas, das ich in der Vergangenheit erfolgreich gemacht habe, können Sie GMSMarker ableiten und das Symbol so ändern, dass es der gewünschte Text ist (Sie müssen ein Bild aus dem erstellen es, wie ich mich erinnere). Dann können Sie es an der gleichen Stelle wie Ihr Kreis platzieren (oder fügen Sie den Kreis als Mitglied in Ihrer GMSMarker-Unterklasse hinzu). https://developers.google.com/maps/documentation/ios-sdk/reference/interface_g_m_s_overlay – u2Fan

+0

hey ich möchte den Kreis über die Karte zu fixieren und die Orte indside der Kreis der Benutzer kann die Karte bewegen, aber der Kreis wird bleiben an der gleichen Stelle irgendeine Hilfe? Danke - Kuldeep @ u2Fan – dreamBegin

Verwandte Themen