我在我正在制作的页面上有一个简单的距离计算器,使用谷歌地图(地方自动填充)中的数据计算距输入字段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;
}
});
答案 0 :(得分:1)
“Foxwoods Resort Casino,Ledyard,CT,United States”是place,geocoder或directions service无法找到它。 autocomplete service返回与结果相关联的坐标。用这些来计算路线。
文档中的Example of getting coordinates(正如评论中Scott Selby所指出的那样)