【发布时间】:2013-12-28 09:36:03
【问题描述】:
我正在使用 Google Direction API 来绘制 2 个地点 A 和 B 之间的路线路径。我能够做到这一点。现在,我需要检查给定的地点 C 是否落在 A 和 B 的路线路径中。
这是我从代码中生成的路由路径的快照。
下面是对应的代码:
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);
}
});
});
}
我该怎么办?
【问题讨论】:
-
我在您的代码中没有看到“放置 C”。一种选择是使用 RouteBoxer 为您的路线确定合理的界限。如果中间点包含在这些边界内,那可能就足够了,否则您可以执行进一步的测试(例如与路线折线的距离。请参阅this similar question(也没有答案)
-
@geocodezip - 这不太一样。在这种情况下,您已经知道位置 C 的位置。RouteBoxer 对这个问题来说太过分了。
-
是的。在 C 已知的情况下使用 RouteBoxer 将是计算密集型的。
标签: google-maps google-maps-api-3 google-places-api google-directions-api