Google Maps Waypoints not showing whole path

后端 未结 1 2043
忘了有多久
忘了有多久 2020-12-12 06:41

I am drawing a simple route from a source to destination using Google Maps V3 Directions Service.

I need to add some locations(midpoints or waypoints) that the route

相关标签:
1条回答
  • 2020-12-12 07:25

    A polylineOptions anonymous object is not (and shouldn't be) a google.maps.Polyline.

    var polylineProps = new google.maps.Polyline({
            strokeColor : '#009933',
            strokeOpacity : 1.0,
            strokeWeight : 3
    
        });
    

    Should be:

    var polylineProps = {
            strokeColor : '#009933',
            strokeOpacity : 1.0,
            strokeWeight : 3
    
        };
    

    If I fix that that, the line appears for the complete route:

    working fiddle

    code snippet:

    var map;
    var wyPts = [];
    
    
    
    function addWayPoints(location) {
      wyPts.push({
        location: location,
        stopover: true
      });
    }
    
    function createInfoWindowContent(latLng, contentStr) {
      var content = '<p><b>' + contentStr + ' </b> </p>' + 'LatLng: ' + latLng;
      return content;
    }
    
    
    function displayRoute(origin, destination, service, display) {
      service.route({
        origin: origin,
        destination: destination,
        //waypoints: [{location: new google.maps.LatLng(30.439025, -97.685654)}, {location: new google.maps.LatLng(30.434882, -97.677015)} , {location:new google.maps.LatLng(30.429495, -97.675274)}],
        waypoints: wyPts,
        optimizeWaypoints: true,
        travelMode: google.maps.DirectionsTravelMode.DRIVING
      }, function(response, status) {
        if (status === google.maps.DirectionsStatus.OK) {
          display.setDirections(response);
        } else {
          alert('Could not display directions due to: ' + status);
    
        }
      });
    }
    
    
    function initMap() {
    
    
      //////////source  destination and middle waypoints
    
      var src = new google.maps.LatLng(30.444719, -97.686202); // //school
      //addWayPoints(src);
      var midPt1 = new google.maps.LatLng(30.439025, -97.685654); // 
      addWayPoints(midPt1);
      var midPt2 = new google.maps.LatLng(30.434882, -97.677015); // 
      addWayPoints(midPt2);
      var midPt3 = new google.maps.LatLng(30.429495, -97.675274); // 
      addWayPoints(midPt3);
    
    
      /* for (var i = 0; i < wyPts.length; i++) {
                  alert("pts are : " + wyPts[i].location);
              } */
    
      var destination = new google.maps.LatLng(30.401820, -97.669545); //
    
    
      ///////////draw the map
      map = new google.maps.Map(document.getElementById('map'), {
        center: src,
        mapTypeControlOptions: {
          style: google.maps.MapTypeControlStyle.HORIZONTAL_BAR,
          position: google.maps.ControlPosition.TOP_RIGHT,
          mapTypeIds: [google.maps.MapTypeId.ROADMAP,
            google.maps.MapTypeId.TERRAIN,
            google.maps.MapTypeId.HYBRID
          ]
        },
        zoomControl: true,
        zoomControlOptions: {
          position: google.maps.ControlPosition.RIGHT_CENTER
        },
        zoom: 14
      });
    
      //draw infowindow at src and destination
      var coordInfoWindowSrc = new google.maps.InfoWindow({
        content: createInfoWindowContent(src, "Source"),
        maxWidth: 180
      });
      coordInfoWindowSrc.setPosition(src);
      coordInfoWindowSrc.open(map);
    
      var coordInfoWindowDest = new google.maps.InfoWindow({
        content: createInfoWindowContent(destination, "Destination"),
        maxWidth: 180
      });
      coordInfoWindowDest.setPosition(destination);
      coordInfoWindowDest.open(map);
    
    
      //display route
      var polylineProps = {
        strokeColor: '#009933',
        strokeOpacity: 1.0,
        strokeWeight: 3
    
      };
    
    
      var directionsDisplay = new google.maps.DirectionsRenderer({
        draggable: false, //do not make the route draggable
        map: map,
        suppressMarkers: true,
        polylineOptions: polylineProps
      });
    
      var directionsService = new google.maps.DirectionsService();
    
      displayRoute(src, destination, directionsService, directionsDisplay);
    
      //add listener to map
      directionsDisplay.addListener(
        'change',
    
        function() {
          displayRoute(src, destination, directionsService,
            directionsDisplay);
        });
    
    
    }
    google.maps.event.addDomListener(window, 'load', initMap);
    html,
    body,
    #map {
      height: 100%;
      width: 100%;
      margin: 0px;
      padding: 0px
    }
    <script src="https://maps.googleapis.com/maps/api/js"></script>
    <div id="map"></div>

    related question: Google Map API V3. Unable to create custom polyline for TRANSIT directions

    0 讨论(0)
提交回复
热议问题