2013-06-12 11 views
5

Sto provando a utilizzare il metodo fitBounds per adattare tutti i miei marcatori nella visualizzazione della videocamera di google maps. Così ho i miei marcatori memorizzati in markersArray e io uso il seguente codice per avviare GMSCoordinateBounds con il 1 ° e il 2o marcatore in markersArray che funziona bene.GMSCoordinateBounds Comprese le coordinate non funzionanti correttamente in Google Maps SDK per iOS

Poi, quando provo ad aggiungere il 3 ° marcatore da markersArray utilizzando includingCoordinate non vedo i limiti di aggiornamento nulla né nei suoi valori né nella mappa è che modifica la telecamera di conseguenza.

La cosa strana è che in Google maps SDK for iOS docs si dice che GMSCoordinateBounds "è immutabile e non può essere modificato dopo la costruzione." Ha senso? Non riesco a cambiare i limiti dopo averli costruiti? Allora come posso aggiungere più coordinate ai limiti?

Ecco il mio codice:

GMSCoordinateBounds *bounds= [[GMSCoordinateBounds alloc] init]; 

    GMSMarker *marker1 = [markersArray objectAtIndex:0]; 
    GMSMarker *marker2 = [markersArray objectAtIndex:1]; 
    GMSMarker *marker3 = [markersArray objectAtIndex:2]; 

    bounds = [[GMSCoordinateBounds alloc] initWithCoordinate:marker1.position coordinate:marker2.position]; 

    //Add the 3rd marker to the bounds 
    [bounds includingCoordinate:marker3.position]; 

    GMSCameraUpdate *update = [GMSCameraUpdate fitBounds:bounds withPadding:600.0f]; 
    [mapView_ animateWithCameraUpdate:update]; 

risposta

26

Il metodo GMSCoordinateBounds includingCoordinate: restituisce una nuova limiti che contengono la combinazione dei limiti originali e la nuova posizione, non modifica l'oggetto si chiama via.

Quindi si avrebbe bisogno di qualcosa di simile:

bounds = [bounds includingCoordinate: marker3.position]; 
+0

Grazie funziona bene ora. È così ovvio che mi sento in imbarazzo a chiedere. – Ali

+0

Hai appena salvato la mia giornata! Grazie – apinho

+0

In che modo Google non ha incluso un metodo che riceve una serie di posizioni e ti restituisce i limiti che si adattano a tutti loro? Il modo in cui è implementato ora ti obbliga a inizializzarlo solo con due posizioni, e poi a loopare il resto delle chiamate includendoCoordinate. Mi sto perdendo un modo migliore per farlo? – Pauls