【发布时间】:2011-01-06 03:57:55
【问题描述】:
我在地图上绘制了大约 20 个标记,即城市中的位置。当我使用 getLatLng 查找市中心时,它总是与我正在绘制的位置有一点距离,这意味着标记通常位于我地图的一角而不是中心。
有没有办法将地图的中心定位在我的位置更中心的位置上?我猜我需要从我可用的 20 个纬度/经度值计算出的某种“平均”经度/经度坐标。
这可能吗?
【问题讨论】:
标签: google-maps
我在地图上绘制了大约 20 个标记,即城市中的位置。当我使用 getLatLng 查找市中心时,它总是与我正在绘制的位置有一点距离,这意味着标记通常位于我地图的一角而不是中心。
有没有办法将地图的中心定位在我的位置更中心的位置上?我猜我需要从我可用的 20 个纬度/经度值计算出的某种“平均”经度/经度坐标。
这可能吗?
【问题讨论】:
标签: google-maps
找到中心应该很容易。只需在您的 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°),此代码可能会出现问题。它还假设这些点位于平面上(而不是球体的表面)。
如果您谈论的是在美国彼此相距数百英里的坐标,那么这些都无关紧要。
【讨论】: