2017-04-16 2 views
-2

Der folgende Code zeigt zwei Punkte in der Karte und zeichnet den treibenden Pfad zwischen diesen Punkten. Was ich versuche zu erreichen, ist, wenn ich einen Punkt bewege, sollte er den Marker bewegen und den Pfad neu zeichnen. Wie kann ich das machen? Ich schätze alle Hinweise. Vielen Dank.Verschieben von Markierungen und Neuzeichnen von Pfad mit Verschieben Google Maps

function mapLocation() { 
    var directionsDisplay; 
    var directionsService = new google.maps.DirectionsService(); 
    var map; 

    function initialize() { 
    directionsDisplay = new google.maps.DirectionsRenderer(); 
    var istanbul = new google.maps.LatLng(41.015137, 28.979530); 
    var mapOptions = { 
     zoom: 7, 
     center: istanbul 
    }; 
    map = new google.maps.Map(document.getElementById('map-canvas'), mapOptions); 
    directionsDisplay.setMap(map); 
    calcRoute(); 
    } 

    function calcRoute() { 
    var start = new google.maps.LatLng(41.01524, 28.975994); 
    //var end = new google.maps.LatLng(38.334818, -181.884886); 
    var end = new google.maps.LatLng(41.013232, 28.978676); 
    var request = { 
     origin: start, 
     destination: end, 
     travelMode: google.maps.TravelMode.DRIVING 
    }; 
    directionsService.route(request, function(response, status) { 
     if (status == google.maps.DirectionsStatus.OK) { 
     directionsDisplay.setDirections(response); 
     directionsDisplay.setMap(map); 
     } else { 
     alert("Directions Request from " + start.toUrlValue(6) + " to " + end.toUrlValue(6) + " failed: " + status); 
     } 
    }); 
    } 

    google.maps.event.addDomListener(window, 'load', initialize); 
} 
mapLocation(); 

Antwort

1

Sie können die draggable Option des DirectionsRendererOptions auf true gesetzt und an die DirectionsRenderer passieren, damit die Benutzer die gerenderte Route (n) bearbeiten.

directionsDisplay = new google.maps.DirectionsRenderer({ 
    draggable: true 
}); 

Siehe documentation.

+0

Eine Frage: Wie kann ich den Abstand zwischen den Punkten erkennen, wenn ich den Standort eines Punktes ändere? Während das Laden dieses Codes hilft: 'alert (response.routes [0] .legs [0] .distance.value +" meter ");' Aber es tut nichts, wenn sich die Position von Punkten ändert. – jason

+0

Um genauer zu sein, wie kann ich die neuen Punkte lokalisieren? Vielen Dank. – jason

+1

Der [DirectionsRenderer] (https://developers.google.com/maps/documentation/javascript/3.exp/reference?hl=fr#DirectionsRenderer) hat ein Ereignis "directions_changed", das * ausgelöst wird, wenn sich die gerenderten Wegbeschreibungen ändern. Entweder wenn ein neues 'DirectionsResult' gesetzt ist oder wenn der Benutzer eine Änderung in den Routenpfad zieht. * – MrUpsidown

Verwandte Themen