【问题标题】:Google maps direction service sends different response formats谷歌地图方向服务发送不同的响应格式
【发布时间】:2012-04-05 23:50:41
【问题描述】:

我正在使用 javascript,谷歌方向服务 我在地图上有多个源点和一个目标点。我需要找到离目标点最近的源点。由于方向服务异步工作,我需要用它们的纬度/纬度映射点。但问题是,方向服务发送的响应格式发生了变化。

    function calcRoute(start, end) {
    var request = {
        origin:start,
        destination:end,
        travelMode:google.maps.DirectionsTravelMode.DRIVING
    };

    directionsService.route(request, 
        function (response, status) {
            distanceCount++;
            if (status == google.maps.DirectionsStatus.OK) {                    
                var dist = computeTotalDistance(response);
                console.log(dist);
                if (dist < minDistance) {
                    minDistance = dist;
                    minDistanceIndex = locationsMap[response.ug.origin.Ua+""+response.ug.origin.Va];
                }
                if (distanceCount == vl.length) {
                    drawWay(vl[minDistanceIndex], fsl);
                }
            }
        }
    );
}

问题出现就行了

minDistanceIndex = locationsMap[response.ug.origin.Ua+""+response.ug.origin.Va];

response.ug.origin.Varesponse.ug.origin.Ua 来自 google 方向服务,但有时会更改为 response.ug。 origin.Xaresponse.ug.origin.Ya

您知道为什么它会不时发生变化吗?或任何想法如何处理这个问题?

【问题讨论】:

    标签: javascript google-maps


    【解决方案1】:

    您不必访问这些内部属性,它们不是 API 的一部分,因此它们可能会发生变化。

    仅使用规范中定义的属性/方法,响应提供的所有数据都可以通过它们访问,

    示例:

    response.routes[0].legs[0].start_location
    //returns latLng of the origin
    

    除此之外:

    您的描述听起来好像您最好使用DistanceMatrixRequest

    【讨论】:

    • 是的,我尝试了相同的方法,但是 response.routes[0].legs[0].start_location 通常不等于我给出的来源。我想这是因为 origin 不一定是途中的一个点,但 start_location 是。我会尝试Distancematrixrequest,但这里真正的问题是;我向(异步)远程服务请求某些东西,但它没有在响应中发送任何信息,表明它是针对哪个请求发送的。
    • 当你喜欢访问传递给directionsService.route的请求对象时,你为什么不这样做呢?它就在那里,因为你已经从中创建了一个闭包,所以你可以在回调中访问它:minDistanceIndex = locationsMap[request.origin.lat(),request.origin.lng()]
    • 因为它们处于不同的范围和方向Service.route 异步工作,这意味着在minDistanceIndex = locationsMap[request.origin.lat(),request.origin.lng()] 请求中没有意义,甚至不存在。
    • 不管是异步的还是不同的作用域,都是闭包。
    • 不幸的是,这很重要,我试过了,但它不起作用。但是矩阵服务适用于我的问题,但是,在异步通信响应中应该有数据表明它是针对哪个请求发送的,否则有时无法识别它。
    猜你喜欢
    • 1970-01-01
    • 2016-09-18
    • 2015-08-22
    • 1970-01-01
    • 2017-02-23
    • 2013-03-03
    • 2018-02-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多