基于标记lat long值使谷歌地图居中

ste*_*tef 5 google-maps

我在地图上绘制了大约20个标记,在城市中的位置.当我使用getLatLng查找市中心时,它总是从我正在绘制的位置稍微移开,这意味着标记通常位于我的地图的一角而不是中心.

有没有办法将地图置于我所在位置较为中心的位置?我猜我需要从我可用的20个纬度/长度值计算出某种"平均"纬度/经度坐标.

这可能吗?

Set*_*eth 6

找到中心应该很容易.只需找到20组中最小和最大的纬度和经度坐标.

中心将是[min_lat + (max_lat - min_lat)/2, min_long + (max_long - min_long)/2].

就像是:

var points = Array(); 
points.push(new GLatLng( xxx, yyy )); 
...

min_lat = 90;
max_lat = -90;
min_long = 180; 
max_long = -180; 
for (p in points) {
    if (p[0] < min_lat) {
        min_lat = p[0];
    }
    if (p[0] > max_lat) { 
        max_lat = p[0];
    }
    if (p[1] < min_long) {
        min_long = p[1];
    }
    if (p[1] > max_long) { 
        max_long = p[1];
    }
}

center = new GLatLng(min_lat + (max_lat - min_lat) / 2, 
                     min_long + (max_long - min_long) / 2];
map.setCenter(center, 10); 
Run Code Online (Sandbox Code Playgroud)

如果您的点穿过经度边界(±180°),此代码可能会遇到问题.它还假设这些点位于平坦表面(而不是球体表面)上.

如果你在谈论美国几百英里内的坐标,这些都不重要.