当我有 1 个标记时,它应该将地图放大到标记(高缩放级别?放大更多)
当我有超过 1 个标记时,它应该检测所有标记定义的边缘(上、右、下和左)并放大
我有这个代码:
lMap.fitBounds(new L.LatLngBounds(this.bounds));
接下来是什么?
var zoom = lMap.getBoundsZoom(new L.LatLngBounds(this.bounds));
lMap.setZoom(zoom);
或者一些平移/缩放内部方法?
当我有 1 个标记时,它应该将地图放大到标记(高缩放级别?放大更多)
当我有超过 1 个标记时,它应该检测所有标记定义的边缘(上、右、下和左)并放大
我有这个代码:
lMap.fitBounds(new L.LatLngBounds(this.bounds));
接下来是什么?
var zoom = lMap.getBoundsZoom(new L.LatLngBounds(this.bounds));
lMap.setZoom(zoom);
或者一些平移/缩放内部方法?
这个JSFiddle应该展示如何使用map.fitBounds来做你想做的事。基本上,只需传入一组 LatLng 对象。
你可以创建一个边界对象
var bounding = new google.maps.LatLngBounds();
将您的标记添加到它
bounding.extend(myMarker1LatLng);
bounding.extend(myMarker2LatLng);
...
然后使用该边界对象设置地图视图
map.fitBounds(bounding);
https://developers.google.com/maps/documentation/javascript/reference?csw=1#LatLngBounds
我很确定它的工作
var bounds = new google.maps.LatLngBounds();
for (i = 0; i < markers.length; i++) {
var data = markers[i]
if (data.lat != '' && data.lng != '') {
var myLatlng = new google.maps.LatLng(data.lat, data.lng);
var marker = new google.maps.Marker({
position: myLatlng,
icon: iconBase,
map: map,
title: data.Name
});
}
bounds.extend(myLatlng);
和地图视图
map.setCenter(bounds.getCenter(), map.fitBounds(bounds));