我已經爲相同的要求做了一個功能。你可以測試,讓我知道它是否會給出一些錯誤:
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,
});
}
}
希望它有幫助。
@DhairyaVora你的代碼工作真的很好。我是在我的應用程序中使用它。然而,當註釋以更大的距離分隔時(例如,在不同的大陸上,它會引發錯誤,例如: 「無效的區域
@kernelpanic,這是一個好主意。我們可以將這段代碼放在try catch中,如果發生錯誤,catch可以顯示第一個註釋。順便說一句,你能告訴我這個錯誤發生的例子嗎? –
@DhairyaVora我很高興你接受一些改進。在我的例子中,當我有兩個註釋時 - 一個在美國亞特蘭大和另一個在瑞士 - 中出現錯誤 – kernelpanic