基于标记的经纬度值居中谷歌地图

5
我正在地图上标记约20个城市位置的标记。当我使用getLatLng来查找城市中心时,它总是与我标记的位置有一点距离,这意味着标记通常位于地图的角落而不是中心。
有没有办法将地图居中于更接近我的标记位置的位置?我猜我需要从我有的20个纬度/经度值计算出某种“平均”纬度/经度坐标。
这可能吗?
1个回答

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); 

这段代码可能会在经度边界(±180°)处出现问题。它还假设这些点位于平面上(而不是球面上)。如果您讨论的是美国几百英里内的坐标,那么这些都不重要。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接