0

jquery/javascriptでx秒ごとにGoogleマップを自動更新しています。

場所が変更されると、マップはズームレベルを変更します(予想)。

しかし、私はこれを達成したい:

ユーザーが手動でズームレベルを変更した場合、マップはユーザーが設定したズームレベルを維持/維持する必要があります。

コードは次のようになります。

  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などの標準のGoogleマップイベントを使用します。

このテーマに関する指示はありますか?

4

1 に答える 1

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オブジェクトはどこですか。

PScenter : メソッドによってとの両方zoomが変更されないようにするために、google.maps.DirectionsRendererOptionsオブジェクトsetDirectionsを指定できます。preserveViewport=true

于 2012-07-04T13:10:08.643 に答える