Ich verwende Google Direction API, um den Routenpfad zwischen 2 Orten A und B zu plotten. Ich bin in der Lage, dies zu tun. Jetzt habe ich eine Anforderung zu überprüfen, ob ein Ort C in den Routenpfad von A und B fällt.Richtung api: Überprüfen Sie, ob ein Ort in den Routenpfad zwischen 2 Orten fällt
Hier ist der Schnappschuss des Routenpfads, den ich aus meinem Code generiert habe.
Hier ist der entsprechende Code:
function initialize() {
var input = document.getElementById('searchTextFieldSource');
var input1 = document.getElementById('searchTextFieldDestination');
var autocomplete = new google.maps.places.Autocomplete(input);
var autocomplete1 = new google.maps.places.Autocomplete(input1);
google.maps.event.addListener(autocomplete1, 'place_changed', function() {
var place = autocomplete.getPlace();
document.getElementById('city1').value = place.name;
var place1Lat = place.geometry.location.lat();
var place1Lng = place.geometry.location.lng();
document.getElementById('cityLat1').value = place1Lat;
document.getElementById('cityLng1').value = place1Lng;
var obj = new Object();
obj.city =place.name;
obj.latitude = place.geometry.location.lat();
obj.longitude = place.geometry.location.lng();
locations.push(obj);
var place2 = autocomplete1.getPlace();
document.getElementById('city2').value = place2.name;
var place2Lat = place2.geometry.location.lat();
var place2Lng = place2.geometry.location.lng();
document.getElementById('cityLat2').value = place2Lat;
document.getElementById('cityLng2').value = place2Lng;
var obj = new Object();
obj.city = place2.name;
obj.latitude = place2.geometry.location.lat();
obj.longitude = place2.geometry.location.lng();
locations.push(obj);
directionsDisplay = new google.maps.DirectionsRenderer();
var startPlace = new google.maps.LatLng(place1Lat, place1Lng);
var mapOptions = {
zoom:7,
center: startPlace
}
var map = new google.maps.Map(document.getElementById('map'), mapOptions);
directionsDisplay.setMap(map);
//refreshMap(locations);
var start = $("#city1").val();
var end = $("#city2").val();
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);
}
});
});
}
Wie kann ich vorgehen?
ich im Code finden Sie unter "Ort C" nicht. Eine Möglichkeit besteht darin, mit RouteBoxer eine vernünftige Grenze für Ihre Route zu bestimmen. Wenn der Zwischenpunkt in diesen Grenzen enthalten ist, kann das gut genug sein, sonst können Sie weitere Tests durchführen (z. B. Entfernung von der Routen-Polylinie. Siehe [diese ähnliche Frage]) (http://stackoverflow.com/questions/20476917/find) -a-place-lies-zwischen-Quelle-und-Ziel-google-maps-and-places-api) (die auch keine Antwort hat) – geocodezip
mögliche Duplikate von [Wie Orte zu bekommen (zB Tankstellen) entlang der Route zwischen Herkunft und Ziel in der Google Maps-API] (http://stackoverflow.com/questions/17283826/how-to-to-get-places-eg-gas-stations-along-route-between-origin-and- destinati) – geocodezip
[Tankstellen entlang (innerhalb ~ 0.25 Meilen von) Ihrer Route] (http://www.geocodezip.com/v3_SO_RouteBoxerPlaces_configurable.html?dist=0.25&to=Electronics%20City&from=BTM%20Layout&type=gas_station&name=&submit=) – geocodezip