【问题标题】:Google maps API - retrieve latlng from origin of directions?谷歌地图 API - 从方向的原点检索 latlng?
【发布时间】:2016-05-03 15:38:51
【问题描述】:

我想知道在计算路线后如何从路线请求的来源检索 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);
    }
});
}

用于来源和目的地的文本框使用来自谷歌开发页面的自动完成方法,该方法位于我的初始化函数中,该函数返回所有类型的位置。

//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;

【问题讨论】:

    标签: javascript google-maps google-maps-api-3 latitude-longitude directions


    【解决方案1】:

    可以的...

    result.routes[0].legs[0].start_locationLatLng 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);
    

    下面是一个完整的例子:

    JSFiddle demo

    【讨论】:

    • 啊谢谢,我想我尝试将 latlng 声明为变量并将变量输入到 setCenter 参数中,但没有工作.. 谢谢!现在我只需要能够使用某种滑块来编辑 raidius,是时候进行更多研究了哈哈。再次感谢。
    • 欢迎。但是,如果您执行var xxx = result.routes[0].legs[0].start_location 并在setCenter() 中使用该变量,则没有理由不起作用...但是您必须在inside请求函数中使用该变量。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-05-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多