2013-06-12 101 views
5

我正嘗試使用fitBounds方法將我所有的標記放在Google地圖相機視圖中。所以我有我的標記存儲在markersArray和我使用以下代碼初始化GMSCoordinateBounds與markersArray中的第一和第二標記,它工作正常。GMSCoordinateBounds IncludesCoordinates在Google Maps SDK for iOS中無法正常工作

然後,當我嘗試使用includingCoordinatemarkersArray添加第3個標記時,我沒有看到邊界更新任何值,也沒有在它的值中更改相應的相機。

奇怪的是,在Google maps SDK for iOS docs它是說GMSCoordinateBounds「是不可改變的,不能修改後修改。」那有意義嗎?構建它們後我無法改變界限?那我該如何添加更多的邊界座標?

這裏是我的代碼:

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

回答

26

GMSCoordinateBounds includingCoordinate:方法返回一個包含原有界限和新的位置的組合,新的邊界,它不修改調用它的對象。

所以,你需要這樣的事:

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

由於現在工作得很好。這很明顯讓我感到很尷尬。 – Ali

+0

你剛剛救了我的一天!謝謝 – apinho

+0

谷歌怎麼沒有包含一個方法來接收一組位置並返回適合所有它們的邊界?現在實現的方法迫使你只用兩個位置初始化它,然後循環調用包括座標。我錯過了一個更好的方法來做到這一點? – Pauls

相關問題