2013-03-13 7 views
7

Devo visualizzare un cerchio (come con MKCircle) su un GMSMapView. Questo è facile quando si utilizza un MKMapView e MKCircle, ma non è possibile utilizzare MKCircle con GMSMapView. Qualche idea?Come visualizzare un cerchio in GMSMapView

Aggiornamento:
Questo sono le correnti (18.03.2013) Opzioni:
1. Un marcatore terreno contenente un'immagine cerchio.
2. Un cerchio realizzato con diversi segmenti (polilinea).

Edit:
3. Google ha aggiunto una 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]; 

Per un'immagine un cerchio 40x40 pixel sembra ok. (Raggio è di circa 100 m)

Piccolo soluzione percorso segmentato:

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

soluzione GMSCircle:

 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

Puoi pubblicare ciò che hai provato finora? – Noich

+0

Non ho idea di come iniziare. Ho pensato di utilizzare GMSGroundOverlay e GMSGroundOverlayOptions aggiungendo un'icona circolare, ma ciò significa che il cerchio ha un raggio specifico tutto il tempo. – Bogus

+0

Non funziona per iOS 8 –

risposta

7

È un po 'tardi da quando la domanda ha più di un anno, ma le ricerche su Google mi hanno portato qui, quindi ho pensato di aggiornarlo. Posterity 4TW!

C'è ora un GMSCircle che può fare, per quanto ne so, quasi tutto ciò che un MKCircle può.
Google's documentation on the GMSCircle.

// 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. 

Si comporta in modo molto simile a un MKCircle (overlay), in quanto ridimensiona con il livello di zoom della mappa, ecc Si prega di ignorare il cerchio blu al centro; questa è la posizione dell'utente mostrata nella vista mappa e ho usato solo le stesse coordinate per il punto centrale di GMSCircle.

Super facile. Guarda le immagini:

Un livello di zoom: enter image description here

E qui, siamo ingrandito un po ': enter image description here

+0

è possibile disegnare del testo sul cerchio? –

+0

GMSOverlays ha una proprietà 'title' che può essere utilizzata per aggiungere testo a determinati tipi di marker.Se ciò non ti porta ciò che desideri, e questo è qualcosa che ho fatto con successo in passato, puoi creare una sottoclasse di GMSMarker e cambiare l'icona in modo che sia il testo che desideri (dovrai creare un'immagine da questo, come ricordo). Quindi puoi posizionarlo nella stessa posizione della tua cerchia (o aggiungere il cerchio come membro nella sottoclasse GMSMarker). https://developers.google.com/maps/documentation/ios-sdk/reference/interface_g_m_s_overlay – u2Fan

+0

hey voglio fissare il cerchio sulla mappa e ottenere i posti all'interno del cerchio l'utente può spostare la mappa ma il cerchio rimarrà nella stessa posizione qualche aiuto? Grazie - Kuldeep @ u2Fan – dreamBegin