Javascript 谷歌地图方向服务发送不同的响应格式

Javascript 谷歌地图方向服务发送不同的响应格式,javascript,google-maps,Javascript,Google Maps,我正在使用javascript,谷歌方向服务 我在地图上有多个源点和一个目的点。我需要找到距离目标点最近的源点。由于方向服务异步工作,我需要用它们的lat/lang映射点。但是问题是,方向服务发送的响应格式会发生变化 function calcRoute(start, end) { var request = { origin:start, destination:end, travelMode:google.maps.Direct

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

    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.Va和response.ug.origin.Ua来自google direction服务,但有时会更改为response.ug.origin.Xa和response.ug.origin.Ya


你知道为什么它会时不时地改变吗?或者有什么办法来解决这个问题?

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

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

例如:

response.routes[0].legs[0].start_location
//returns latLng of the origin
除此之外:


您的描述听起来似乎您最好使用一个

是的,我尝试了相同的响应。路由[0]。支腿[0]。开始位置通常不等于我给出的原点。我想这是因为起点不一定是一条路上的一个点,但起点位置是。我会尝试一下Distancematrixrequest,但这里真正的问题是;我向异步远程服务请求某些内容,但它不会在响应中发送任何信息,指示发送请求的目的。如果要访问传递给DirectionService.route的请求对象,为什么不这样做?它就在那里,因为您已经从它创建了一个闭包,所以您可以在回调中访问它:minDistanceIndex=locationsMap[request.origin.lat,request.origin.lng],因为它们位于不同的范围和方向Service.route异步工作,这意味着minDistanceIndex=locationsMap[request.origin.lat,request.origin.lng]请求没有意义,甚至不存在。不管它是异步的还是不同的作用域,它都是一个闭包。不幸的是,它很重要,我尝试了它,但它不起作用。但是矩阵服务可以解决我的问题,但是,在异步通信中,响应应该有数据指示它发送的是哪个请求,否则有时无法识别它。