2013-06-12 9 views
5

Próbuję użyć metody fitBounds, aby dopasować wszystkie moje znaczniki w widoku mapy kamer Google. Więc mam moje znaczniki przechowywane w markersArray i używam następującego kodu, aby zainicjować GMSCoordinateBounds z 1. i 2. markerem w markersArray, który działa dobrze.GMSCoordinateBounds IncludingCoordinates nie działa poprawnie w Google Maps SDK dla iOS

Następnie, gdy próbuję dodać trzeci znacznik z markersArray, używając includingCoordinate, nie widzę granic aktualizujących nic ani w jego wartościach, ani na mapie, ponieważ zmienia on odpowiednio kamerę.

Dziwne jest to, że w Google maps SDK for iOS docs mówi się, że GMSCoordinateBounds "jest niezmienny i nie można go modyfikować po zbudowaniu." Czy to ma sens? Nie mogę zmienić granic po ich skonstruowaniu? Jak dodać więcej współrzędnych do granic?

Oto mój kod:

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]; 

Odpowiedz

26

Sposób GMSCoordinateBounds includingCoordinate: Zwraca nowy granice zawierające kombinację oryginalnych granic i nowym miejscu, to nie zmienia obiekt, który nazywamy go.

Więc trzeba coś takiego:

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

Dzięki teraz działa poprawnie. To takie oczywiste, że czuję się zawstydzony pytaniem. – Ali

+0

Właśnie uratowałeś mój dzień! Dziękujemy – apinho

+0

W jaki sposób Google nie zawiera metody, która odbiera tablicę lokalizacji i zwróci granice, które pasują do wszystkich? Wprowadzony teraz sposób zmusza do zainicjowania go tylko w dwóch lokalizacjach, a następnie w pętli pozostałe wywołania zawierająceCoordynację. Czy brakuje mi lepszego sposobu na zrobienie tego? – Pauls