Google Maps V3 snap to nearest Street

前端 未结 2 1989
礼貌的吻别
礼貌的吻别 2021-02-02 15:20

When I click into a map I want the marker to get snaped to the nearest street. There is a good exmaple here: http://econym.org.uk/gmap/example_snappath.htm (Main Page:http://eco

相关标签:
2条回答
  • 2021-02-02 16:03

    The example that you have given gets the result by doing a direction lookup and then getting the first location from it. In api v3 this is accomplished with the following code where "map" is the name of your map

    var directionsService = new google.maps.DirectionsService();
    
    google.maps.event.addListener(map, 'click', function(event) {
        var request = {
            origin:event.latLng, 
            destination:event.latLng,
            travelMode: google.maps.DirectionsTravelMode.DRIVING
        };
    
        directionsService.route(request, function(response, status) {
          if (status == google.maps.DirectionsStatus.OK) {
              var marker = new google.maps.Marker({
                 position: response.routes[0].legs[0].start_location, 
                 map: map,
                 title:"Hello World!"
              });
          }
        });
    });
    
    0 讨论(0)
  • 2021-02-02 16:10

    many thanks Revolution42 it works quite nice

    <!DOCTYPE html>
    <html>
      <head>
        <meta name="viewport" content="initial-scale=1.0, user-scalable=no" />
        <style type="text/css">
          html { height: 100% }
          body { height: 100%; margin: 0; padding: 0 }
          #map_canvas { height: 100% }
        </style>
        <script type="text/javascript"
          src="http://maps.googleapis.com/maps/api/js?key=YOU API KEY&sensor=false">
        </script>
        <script type="text/javascript">
          function initialize() {
            var myOptions = {
              center: new google.maps.LatLng(-34.397, 150.644),
              zoom: 8,
              mapTypeId: google.maps.MapTypeId.ROADMAP
            };
            var map = new google.maps.Map(document.getElementById("map_canvas"),
                myOptions);
    
    
    var directionsService = new google.maps.DirectionsService();
    
          google.maps.event.addListener(map, 'click', function(event) {
          var request = {
            origin:event.latLng, 
            destination:event.latLng,
            travelMode: google.maps.DirectionsTravelMode.DRIVING
          };
    
          directionsService.route(request, function(response, status) {
          if (status == google.maps.DirectionsStatus.OK) {
              var marker = new google.maps.Marker({
                 position: response.routes[0].legs[0].start_location, 
                 map: map,
                 title:"Hello World!"
              });
          }
        });
    });
    
    
    }
    
    
    
        </script>
      </head>
      <body onload="initialize()">
        <div id="map_canvas" style="width:100%; height:100%"></div>
      </body>
    </html>
    
    0 讨论(0)
提交回复
热议问题