我想知道如何在计算路线时从路线请求的原点检索latlng。 我想用它围绕已经制作的路线的原点绘制一个圆圈。
function calcRoute() {
start = document.getElementById("start").value; //value from start textbox
end = document.getElementById("end").value; //value from end textbox
var request = {
origin: start,
destination: end,
travelMode: google.maps.TravelMode.DRIVING
};
directionsService.route(request, function(result, status) {
//if route can be generated
if (status == google.maps.DirectionsStatus.OK) {
directionsDisplay.setDirections(result);
//circle.setCenter();
}else{
//display window alert with status error
window.alert('Directions request failed due to ' + status);
}
});
}
用于原点和目的地的文本框使用google dev页面中的自动完成方法,该页面位于我的初始化函数中,该函数返回所有类型的位置。
//autocomplete section
var inputStart = document.getElementById('start');
var optionsStart = {}; //Empty which will return all types
autocomplete = new google.maps.places.Autocomplete(inputStart, optionsStart);
var inputEnd = document.getElementById('end');
var optionsEnd = {}; //Empty which will return all types
autocomplete = new google.maps.places.Autocomplete(inputEnd, optionsEnd);
//--------------------------------------------------
我研究过,我是否需要返回地址然后使用地理编码器来检索我想要的数据,或者这可以通过我的代码现在的方式来完成。
我已经看过这段代码,但如果这也有帮助,也不知道如何实现它。
result.routes[0].legs[0].start_location;
答案 0 :(得分:0)
这样可行......
result.routes[0].legs[0].start_location
是LatLng object。
因此,您可以使用它来创建标记或设置圆心点。我们错过了创建圆圈的代码。但你可以这样做:
circle.setCenter(result.routes[0].legs[0].start_location);
如果您的圈子尚未创建:
var circleOptions = {
fillColor: '#FFFFFF',
fillOpacity: 0.25,
map: map,
center: result.routes[0].legs[0].start_location,
radius: 10000
};
var circle = new google.maps.Circle(circleOptions);
以下是一个完整的例子: