2016-06-01 2 views
-1

Ich habe an einem Open Source Street View Player gearbeitet (http://StreetViewPlayer.org), und ich habe eine Frage bezüglich des Hinzufügens eines neuen Punktes zu einem neue Richtung.Wie kann ich benachrichtigt werden, wenn der Benutzer beim Addieren eines neuen Punktes in eine Richtung die 8 Wegpunktbegrenzung erreicht?

Wenn der Benutzer einen neuen Standort hinzufügt, muss ich wissen, ob der Benutzer die Begrenzung von 8 Wegpunkten erreicht hat.

Gibt es eine Möglichkeit, benachrichtigt zu werden?

Kann mir jemand einen Einblick geben?

Hier ist ein einfacher Code, dies zu veranschaulichen (mehrere Punkte hinzufügen, bis Sie die 8 Wegpunkte Einschränkungen erreichen):

<!DOCTYPE html> 
<html> 
    <head> 
    <title>Simple Map</title> 
    <meta name="viewport" content="initial-scale=1.0"> 
    <meta charset="utf-8"> 
    <style> 
     html, body { 
     height: 100%; 
     margin: 0; 
     padding: 0; 
     } 
     #map { 
     height: 100%; 
     } 
    </style> 
    </head> 
    <body> 
    <div id="map"></div> 
    <script> 
     var map; 
     function initMap() { 
     map = new google.maps.Map(document.getElementById('map'), { 
      center: {lat: 35.694346, lng: -79.796409}, 
      zoom: 13 
     }); 
     var directionsService = new google.maps.DirectionsService; 
     var directionsDisplay = new google.maps.DirectionsRenderer({ 
      draggable: true, 
      map: map 
     }); 
     directionsDisplay.setMap(map); 

     directionsService.route({ 
      origin:  {lat: 35.694346, lng: -79.796409}, 
      destination: {lat: 34.964737, lng: -80.060434}, 
      waypoints: [ 
      {location: {lat: 35.559346, lng: -80.089850}, stopover: true}, 
      {location: {lat: 35.356588, lng: -79.899915}, stopover: true}, 
      ], 
      optimizeWaypoints: false, 
      travelMode: google.maps.TravelMode.DRIVING 
     }, function(response, status) { 
      if (status === google.maps.DirectionsStatus.OK) { 
      directionsDisplay.setDirections(response); 
      } else { 
      window.alert('Directions request failed due to ' + status); 
      } 
     }); 
     function show(v) { 
      if (v != undefined) 
       console.log("new waypoint is # " + v); 
     } 
     directionsDisplay.addListener('directions_changed', function() { 
      var newDir = directionsDisplay.getDirections(); 
      console.log(newDir); 
      show(newDir.request.Xc); 
      show(newDir.request.Yc); 
      show(newDir.request.Uc); 
      show(newDir.request.Vc); 
     }); 
     } 
    </script> 
    <script src="https://maps.googleapis.com/maps/api/js?callback=initMap" 
    async defer></script> 
    </body> 
</html> 

Antwort

0

Die Anzahl der Gesamtpunktzahl (Ursprung, Ziel und Wegpunkten) gleich der Länge der geocoded_waypoints Array. Ziehe 2 davon ab, um die Anzahl der "Wegpunkte" in der Routenanfrage zu erhalten.

Code-Schnipsel:

var map; 
 

 
function initMap() { 
 
    map = new google.maps.Map(document.getElementById('map'), { 
 
    center: { 
 
     lat: 35.694346, 
 
     lng: -79.796409 
 
    }, 
 
    zoom: 13 
 
    }); 
 
    var directionsService = new google.maps.DirectionsService; 
 
    var directionsDisplay = new google.maps.DirectionsRenderer({ 
 
    draggable: true, 
 
    map: map 
 
    }); 
 
    directionsDisplay.setMap(map); 
 

 
    directionsService.route({ 
 
    origin: { 
 
     lat: 35.694346, 
 
     lng: -79.796409 
 
    }, 
 
    destination: { 
 
     lat: 34.964737, 
 
     lng: -80.060434 
 
    }, 
 
    waypoints: [{ 
 
     location: { 
 
     lat: 35.559346, 
 
     lng: -80.089850 
 
     }, 
 
     stopover: true 
 
    }, { 
 
     location: { 
 
     lat: 35.356588, 
 
     lng: -79.899915 
 
     }, 
 
     stopover: true 
 
    }, ], 
 
    optimizeWaypoints: false, 
 
    travelMode: google.maps.TravelMode.DRIVING 
 
    }, function(response, status) { 
 
    if (status === google.maps.DirectionsStatus.OK) { 
 
     directionsDisplay.setDirections(response); 
 
    } else { 
 
     window.alert('Directions request failed due to ' + status); 
 
    } 
 
    }); 
 

 
    function show(v) { 
 
    if (v != undefined) 
 
     console.log("new waypoint is # " + v); 
 
    } 
 
    directionsDisplay.addListener('directions_changed', function() { 
 
    var newDir = directionsDisplay.getDirections(); 
 
    document.getElementById('waypoints').innerHTML = newDir.geocoded_waypoints.length; 
 
    console.log("there are " + (newDir.geocoded_waypoints.length - 2) + " waypoints"); 
 
    console.log(newDir); 
 
    show(newDir.request.Xc); 
 
    show(newDir.request.Yc); 
 
    show(newDir.request.Uc); 
 
    show(newDir.request.Vc); 
 
    }); 
 
} 
 
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="waypoints"></div> 
 
<div id="map"></div>

+0

Die Frage war: Gibt es eine Möglichkeit benachrichtigt werden? Und wenn ich etwas nicht verpasse, wird das Ereignis "directions_changed" nicht ausgelöst, wenn ein 9. Wegpunkt vorläufig zur Richtung hinzugefügt wird. – Olivier

+0

Der 'directions_changed' wird jedes Mal ausgelöst, wenn ein 9. Wegpunkt hinzugefügt wird. – geocodezip

Verwandte Themen