我在jquery / javascript中每隔x秒自动更新谷歌地图。
当位置更改时,地图会更改缩放级别(预期)。
但我想实现这个目标:
如果用户手动更改了缩放级别,则地图应保持/保持用户设置的缩放级别。
代码与此类似:
function calcRoute(user) {
if(user)
{
start = document.getElementById("start_location").value;
}
end = document.getElementById("end_location").value;
var request = {
origin:start,
destination:end,
travelMode: google.maps.DirectionsTravelMode.WALKING
};
directionsService.route(request, function(response, status) {
if (status == google.maps.DirectionsStatus.OK) {
directionsDisplay.setDirections(response);
$('#txt_dur').text(response.routes[0].legs[0].duration.text);
$('#txt_dist').text(response.routes[0].legs[0].distance.text);
}
});
//if(userZoom==true)
// map.setZoom(current_zoom);
}
function autoUpdate() {
navigator.geolocation.getCurrentPosition(function(position) {
var newPoint = new google.maps.LatLng(position.coords.latitude,
position.coords.longitude);
start = newPoint.toString();
calcRoute(false);
});
setTimeout(autoUpdate, 5000);
}
autoUpdate();
我更喜欢标准的谷歌地图活动 比如zoom_changed,而不是为用户缩放创建自定义事件。
有关此主题的任何指示?
答案 0 :(得分:1)
试试这样:
if (status == google.maps.DirectionsStatus.OK) {
var tmpZoom = map.getZoom(); //added line
directionsDisplay.setDirections(response);
map.setZoom( tmpZoom ); //added line
$('#txt_dur').text(response.routes[0].legs[0].duration.text);
$('#txt_dist').text(response.routes[0].legs[0].distance.text);
}
其中map
是您的google.maps.Map
对象。
PS :为了防止center
方式更改zoom
和setDirections
,您可以指定preserveViewport=true
{{1}}对象。