当前位置 : 主页 > 手机开发 > 无线 >

在地图上围绕多个点(注释)居中映射 – Titanium mobile

来源:互联网 收集:自由互联 发布时间:2021-06-10
我在地图上有多个注释 – 尽管用户可能需要滚动才能看到它们.我希望用户能够选择一个按钮使其全部适合地图 – 无需滚动/手动调整大小. 我确定了分钟.最多我希望在地图上显示的点
我在地图上有多个注释 – 尽管用户可能需要滚动才能看到它们.我希望用户能够选择一个按钮使其全部适合地图 – 无需滚动/手动调整大小.

我确定了分钟.最多我希望在地图上显示的点的纬度和经度(例如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,
        }); 
    }

}

希望能帮助到你.

网友评论