2012-05-27 34 views
4

我在地圖上有多個註釋 - 儘管用戶可能需要滾動才能看到它們。我希望用戶能夠選擇一個按鈕以將它們全部放在地圖上 - 無需滾動/手動調整大小。圍繞地圖上的多個點(註釋)定位地圖 - 鈦移動

我確定了最小。和最大。緯度和經度(例如minLat,maxLat,minLong,maxLong),以顯示我想要在地圖上顯示的點。

但是,我正在努力使用具體的公式來獲取經度和緯度屬性傳遞給mapview.setLocation。我可以使用什麼公式的指針?

回答

7

我已經爲相同的要求做了一個功能。你可以測試,讓我知道它是否會給出一些錯誤:

function setMarkersWithCenter(map,latiarray,longiarray) 
{ 
    if(latiarray.length != longiarray.length) 
     return; 
    var total_locations = latiarray.length; 
    var minLongi = null, minLati = null, maxLongi = null, maxLati = null; 
    var totalLongi = 0.0, totalLati = 0.0; 

    for(var i = 0; i < total_locations; i++) 
    { 
     if(minLati == null || minLati > latiarray[i]) { 
      minLati = latiarray[i]; 
     } 
     if(minLongi == null || minLongi > longiarray[i]) { 
      minLongi = longiarray[i]; 
     } 
     if(maxLati == null || maxLati < latiarray[i]) { 
      maxLati = latiarray[i]; 
     } 
     if(maxLongi == null || maxLongi < longiarray[i]) { 
      maxLongi = longiarray[i]; 
     } 
    } 

    var ltDiff = maxLati-minLati; 
    var lgDiff = maxLongi-minLongi; 
    var delta = ltDiff>lgDiff ? ltDiff : lgDiff; 
    if(total_locations>0 && delta>0) 
    { 
     map.setLocation({ 
      animate : true, 
      latitude:((maxLati+minLati)/2), 
      longitude:((maxLongi+minLongi)/2), 
      latitudeDelta:delta, 
      longitudeDelta:delta, 
     }); 
    } 

} 

希望它有幫助。

+0

@DhairyaVora你的代碼工作真的很好。我是在我的應用程序中使用它。然而,當註釋以更大的距離分隔時(例如,在不同的大陸上,它會引發錯誤,例如: 「無效的區域 kernelpanic

+0

@kernelpanic,這是一個好主意。我們可以將這段代碼放在try catch中,如果發生錯誤,catch可以顯示第一個註釋。順便說一句,你能告訴我這個錯誤發生的例子嗎? –

+0

@DhairyaVora我很高興你接受一些改進。在我的例子中,當我有兩個註釋時 - 一個在美國亞特蘭大和另一個在瑞士 - 中出現錯誤 – kernelpanic