我想保存当前用户正在观看的位置,并在点击后恢复。
如何获取当前的纬度经度界限,以便我可以在其上绘制map.fitBounds?
答案 0 :(得分:7)
这是在“bounds_changed”事件
上捕获当前地图边界的代码google.maps.event.addListener(map, 'bounds_changed', function() {
try {
if( initialBounds == null ) {
initialBounds = map.getBounds();
}
} catch( err ) {
alert( err );
}
});
然后,您可以使用此代码
返回绑定的地图google.maps.event.addDomListener(controlUI, 'click', function() {
// map.setCenter(home)
if( initialBounds != null ) {
map.fitBounds( initialBounds );
}
});
答案 1 :(得分:4)
getBounds()
为了获得我们的纬度和经度,我们需要将getBounds()
移动到bounds_changed
事件监听器。
var map = new google.maps.Map(document.getElementById("map"), {
zoom: 10,
center: new google.maps.LatLng(lat, lng),
mapTypeId: google.maps.MapTypeId.ROADMAP
});
google.maps.event.addListener(map, 'bounds_changed', function() {
var bounds = map.getBounds();
var ne = bounds.getNorthEast();
var sw = bounds.getSouthWest();
console.log(ne.lat());
console.log(ne.lng());
console.log(sw.lat());
console.log(sw.lng());
});
当视口边界发生变化时会触发此事件。如果你有一个ajax调用,每次map更改位置时都会触发ajax调用。
因此,在这种情况下,更好的解决方案是在getBounds()
事件侦听器中移动idle
。当缩放后地图变为空闲时会触发此事件。
var map = new google.maps.Map(document.getElementById("map"), {
zoom: 10,
center: new google.maps.LatLng(lat, lng),
mapTypeId: google.maps.MapTypeId.ROADMAP
});
google.maps.event.addListener(map, 'idle', function() {
var bounds = map.getBounds();
var ne = bounds.getNorthEast();
var sw = bounds.getSouthWest();
console.log(ne.lat());
console.log(ne.lng());
console.log(sw.lat());
console.log(sw.lng());
});