距离根据自动完成输入计算:API下拉选择中的某些位置无法分配可用的位置数据

时间:2014-09-08 15:50:19

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

我在我正在制作的页面上有一个简单的距离计算器,使用谷歌地图(地方自动填充)中的数据计算距输入字段2点之间的距离。

我使用以下方式从谷歌加载信息:

<script type="text/javascript" src="https://maps.googleapis.com/maps/api/js?sensor=false&libraries=places">

我还尝试添加用逗号分隔的adsense和geometery库,但是从文档中我看起来并不是真的需要这些来解决这个问题。如果没有它们,我想看到的地方,只是有时它们没有被使用。

下拉列表确实有效,我可以看到我想要使用的结果。大部分时间它会,但对于某些模糊的地方,它不会。例如,从X到#34; Tufts University,Medford,MA,United States&#34; (由谷歌自动完成)将计算得很好。然而,从X到&#34; Foxwoods Resort Casino,Ledyard,CT,United States&#34; (也是由谷歌自动完成)不会。这些都是大型校园风格的布局,我知道它不是一个确切的地址,但在大多数情况下,大型多地址目的地的最广泛名称将正常工作。那么为什么不在福克斯伍兹呢?它出现在谷歌提供的自动完成下拉菜单中,那么为什么它没有某种地址价值呢?

我用于地图的选项非常标准,我将其限制在美国,但这是关于它的。不同的是:

travelMode: google.maps.DirectionsTravelMode.DRIVING

它如何利用积分来获得里程,不确定它是否相关,但这是我能找到的唯一可能改变行为的事情。

如果我需要提供更多信息让我知道,我想知道如何舔这个,我就是不能。我希望在不进入整个地理定位的情况下可以实现:P

谢谢!

编辑:这里是使用&#34;开始&#34;的距离计算功能。和&#34;结束&#34;自动填充输入:

        var fromText = document.getElementById('start');
    var fromAuto = new google.maps.places.Autocomplete(fromText);
        var toText = document.getElementById('end');
        var toAuto = new google.maps.places.Autocomplete(toText);



    function calcRoute() {
        var start = document.getElementById("start").value;
        var end = document.getElementById("end").value;
        var distanceInput = document.getElementById("distance");


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

        directionsService.route(request, function(response, status) {
            if (status == google.maps.DirectionsStatus.OK) {
                directionsDisplay.setDirections(response);
                distanceinkm = response.routes[0].legs[0].distance.value / 1000;
                distanceinmiles = (distanceinkm * 0.621371);
                distanceinmiles = distanceinmiles.toFixed(2);
                distanceInput.value = distanceinmiles;
            }
        });

1 个答案:

答案 0 :(得分:1)

“Foxwoods Resort Casino,Ledyard,CT,United States”是placegeocoderdirections service无法找到它。 autocomplete service返回与结果相关联的坐标。用这些来计算路线。

文档中的

Example of getting coordinates(正如评论中Scott Selby所指出的那样)