javascript - 谷歌距离计算器和自动完成

标签 javascript google-maps google-maps-api-3 map autocomplete

我正在尝试使用 google maps 和 auto-complete 做一些工作。我已经采用了谷歌距离脚本并尝试将谷歌的自动完成功能与其集成。距离计算和路线方向工作正常。但是我在 startend 输入字段中的自动完成失败了。如果我在结束和开始字段中手动输入位置,它可以工作,但不会自动完成谷歌工作。

<style type="text/css">
html {
    height: 100%
}
body {
    height: 100%;
    margin: 0px;
    padding: 0px
}
</style>
<script type="text/javascript" src="https://maps.googleapis.com/maps/api/js?sensor=false"></script>
<script type="text/javascript">
    //<![CDATA[
      var map = null;
      var directionDisplay;
      var directionsService = new google.maps.DirectionsService();

      function initialize() {
        directionsDisplay = new google.maps.DirectionsRenderer();
        var mapOptions = {
          zoom: 7,
          mapTypeId: google.maps.MapTypeId.ROADMAP,
          center: new google.maps.LatLng(41.850033, -87.6500523)
        };
        map = new google.maps.Map(document.getElementById('map_canvas'),
            mapOptions);
        directionsDisplay.setMap(map);
        directionsDisplay.setPanel(document.getElementById('directions-panel'));

        var control = document.getElementById('control');
        control.style.display = 'block';
        map.controls[google.maps.ControlPosition.TOP].push(control);
      }

      function calcRoute() {
        var start = document.getElementById('start').value;
        var end = document.getElementById('end').value;
        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);
            computeTotalDistance(response);
          }
        });
      }
      function computeTotalDistance(result) {
      var total = 0;
      var myroute = result.routes[0];
      for (i = 0; i < myroute.legs.length; i++) {
        total += myroute.legs[i].distance.value;
      }
      total = total / 1000.
      document.getElementById("total").innerHTML = total + " km";
      }

    function auto() {
    var input = document.getElementById[('start'), ('end')];
    var types
    var options = {
       types: [],
       componentRestrictions: {country: ["AUS"]}
        };
        var autocomplete = new google.maps.places.Autocomplete(input, options);
     }

      google.maps.event.addDomListener(window, 'load', initialize);
    </script>
</head>
<body onLoad="initialize()">
<div id="total"></div>
<div id="control"> <strong>Start:</strong>
<input type="text" id="start"><input type="text" id="end"><input type="button" value="GO" onClick="calcRoute();">
</div>
<table border="1" style="height:100%; width:100%;">
  <tr>
    <td style="width: 70%; height: 100%;"><div id="map_canvas" style="width:100%;height:100%;"></div></td>
    <td  style="width: 30%; height: 100%;"><div id="directions-panel" style="width:100%;height: 100%;"></div></td>
  </tr>
</table>
</body>

最佳答案

改变

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

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

之后

map = new google.maps.Map(document.getElementById('map_canvas'),
        mapOptions);

添加

    //Find From location    
    var fromText = document.getElementById('start');
    var fromAuto = new google.maps.places.Autocomplete(fromText);
    fromAuto.bindTo('bounds', map);
    //Find To location
    var toText = document.getElementById('end');
    var toAuto = new google.maps.places.Autocomplete(toText);
    toAuto.bindTo('bounds', map);
    //  

关于javascript - 谷歌距离计算器和自动完成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12856014/

相关文章:

javascript - 单击 Ajax 可排序表的一行时如何打开信息窗口

javascript - 如何使用 Javascript 在 Canvas 上绘图

javascript - 添加或删除数据后,Angular 页面不会刷新

ios - 如何使用 Google autocomplete place api ios sdk 获得特定国家/地区的结果?

javascript - 谷歌地图信息窗口关闭事件不起作用

android - 导出到签名 APK 后,Web View 未加载页面

javascript - Phaser : f1(a, b, f2) - 如果 f2 有参数怎么办?

javascript - 如何在 javascript 而不是 jquery 中更改父 div 的 css

ios - 自定义 Google map 样式在 iPad 上不起作用

javascript - Uncaught ReferenceError : saveData is not defined in Google Maps