使用最新版本的谷歌地图。如何使用经度和纬度添加标记并使用 JavaScript 自动调整地图的缩放级别以包含所有标记?
问问题
46741 次
3 回答
86
Google Maps API v3 提供了一个LatLngBounds
可以添加多个对象的LatLng
对象。然后,您可以将其传递给Map.fitBounds()
函数,如下所述:
部分示例
var latlng = [
new google.maps.LatLng(1.23, 4.56),
new google.maps.LatLng(7.89, 1.01),
// ...
];
var latlngbounds = new google.maps.LatLngBounds();
for (var i = 0; i < latlng.length; i++) {
latlngbounds.extend(latlng[i]);
}
map.fitBounds(latlngbounds);
于 2010-10-11T11:54:16.043 回答
25
通过为每个纬度/经度对实例化一个标记对象,您可以将标记添加到您的谷歌地图:
var marker = new google.maps.Marker({
position: currentLatLng,
map: map,
title:"Title!"
});
标记构造器上的地图选项会将新市场对象与您的地图相关联。
要缩放地图以包含新标记,请在地图对象上使用fitBounds方法。fitBounds 将latLngBounds对象作为参数。这个对象有一个方便的扩展方法,它将调整边界以包含新的纬度/经度。因此,您只需要遍历所有点,在单个 latLngBounds 对象上调用extend 。这将扩展范围以包括所有标记。完成此操作后,将此对象传递给地图上的fitBounds方法,它将缩放以显示所有新标记。
于 2010-10-10T13:09:48.750 回答
3
以下为我做了诀窍
map.fitBounds(bounds);
// add a zoom to the map
var listener = google.maps.event.addListener(map, 'idle', function()
{
if(map.getZoom() > 16)
map.setZoom(17);
google.maps.event.removeListener(listener);
});
在 setZoom() 方法中设置所需的缩放。值越大,显示的位置细节越宽,值越小,它会限制和缩小位置细节
于 2019-10-26T14:30:22.040 回答