Google距离矩阵ZERO_RESULTS已退回

时间:2014-10-19 17:35:54

标签: javascript google-maps google-maps-api-3 google-api distance

前言

我已经使用Google Maps API很长一段时间了,以前能够成功使用距离矩阵服务here。然后我决定做一些重构并出现问题......

当前问题

尝试获取Distance Matrix服务的结果时,rows对象包含一个空的(status: ZERO_RESULTS)对象数组。

运行时期间的空对象:

the empty object during runtime

通常情况如下所示:

normal object during runtime

代码

coords数组被传递到distanceMatrixCoords()函数。它们看起来像这样:

the coords array

使用坐标字符串正确填充其他变量,例如var origins = pos;

包含此代码的整个文件是 available here

function distanceMatrixCoords(coords) {
    var origins = pos;
    var destinations = coords;
    var service = new google.maps.DistanceMatrixService();

    service.getDistanceMatrix({
            origins: [origins],
            destinations: destinations,
            travelMode: google.maps.TravelMode.DRIVING,
            unitSystem: google.maps.UnitSystem.IMPERIAL,
            avoidHighways: false,
            avoidTolls: false
        },
        callback
    );

    function callback(response, status) {
        if (status == google.maps.DistanceMatrixStatus.OK) {
            var origins = response.originAddresses;
            var destinations = response.destinationAddresses;
            var distanceElement = [];
            var theRow = null;

            for (var i = 0; i < origins.length; i++) {

                var results = response.rows[i].elements;

                for (var j = 0; j < results.length; j++) {
                    var element = results[j];
                    var distance = element.distance.text;
                    var duration = element.duration.text;
                    var from = origins[i];
                    var to = destinations[j];

                    distanceElement[j] = document.createElement('p');
                    distanceElement[j].innerHTML = results[j].distance.text;
                    distanceElement[j].className = 'distance-cell';
                }
            }
        }
    }

}

最终,根据上面的代码,行var results = response.rows[i].elements;是代码中断的地方。 response.rows是数组中具有多个 ZERO_RESULTS 的对象。与我之前的代码(上面链接的)相比,distanceMatrixCoords()函数接收的数据与以前完全相同。

传递给response函数的callback()对象包含以下值: response object

destinationAddressesoriginAddresses使用看起来像逗号分隔值"41.0259285,81.5899887"的坐标正确填充。问题再一次是rows数组。

我已经查看了许多其他来源的答案,但Google Maps API的距离矩阵服务似乎没有很多可用资源。我看到this question,但还没有记录答案。

2 个答案:

答案 0 :(得分:5)

问题是我从我为获取数据而构建的服务中错误地返回了我的坐标。例如,当41.0259285,81.5899887坐标为41.0259285,-81.5899887时,坐标为{{1}}。缺少经度前面的减号,因此坐标无效,距离矩阵服务不知道如何处理它们。

答案 1 :(得分:0)

我遇到了类似的问题,但没有指定“地区”(又称国家/地区代码),并且发送了一个“目的地”(在美国是一个地方)以及一组长/短坐标。

添加预期的国家解决了该问题。