谷歌地图自动更新位置,但不是用户设置缩放

时间:2012-07-04 10:35:12

标签: jquery google-maps google-maps-mobile

我在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,而不是为用户缩放创建自定义事件。

有关此主题的任何指示?

1 个答案:

答案 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方式更改zoomsetDirections,您可以指定preserveViewport=true {{1}}对象。