围绕地图上的多个点(注释)定位地图 - 钛移动

问题描述:

我在地图上有多个注释 - 尽管用户可能需要滚动才能看到它们。我希望用户能够选择一个按钮以将它们全部放在地图上 - 无需滚动/手动调整大小。围绕地图上的多个点(注释)定位地图 - 钛移动

我确定了最小。和最大。纬度和经度(例如minLat,maxLat,minLong,maxLong),以显示我想要在地图上显示的点。

但是,我正在努力使用具体的公式来获取经度和纬度属性传递给mapview.setLocation。我可以使用什么公式的指针?

我已经为相同的要求做了一个功能。你可以测试,让我知道它是否会给出一些错误:

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