我正在使用地理编码API将地址转换为经度和纬度,然后使用接收到的坐标分配隐藏的输入值,而不是使用此数据在地图上进行绘制。

我正在使用面向javascript library的客户端,这是对我的JavaScript稍加修改的内容。

<script>
        function initMap() {
            var geocoder = new google.maps.Geocoder();
            geocodeAddress(geocoder);
            console.log('initMap');
        }

        function geocodeAddress(geocoder, resultsMap) {
            var address = document.getElementById('address').value;
            console.log('geocodeAddresses');

            geocoder.geocode({'address': address}, function(results, status) {
                console.log('geocoder.geocode');
                if (status === google.maps.GeocoderStatus.OK) {
                    console.log('status OK');
                    document.getElementById('lnglat').value = results[0].geometry.location;
                    console.log(results[0].geometry.location);
                    } else {
                    console.log('status error');
                }
            });
        }
    </script>


当我在firebug中看到输出时,可以看到“ initmap”,“ geocodeAddresses”,但是geocoder.geocode中没有任何内容。

我看不到任何原因,我在firebug中没有得到任何错误,所有必需的文件都在那里,并且我的API密钥已包含且有效。

谢谢你的时间

编辑:似乎根本没有运行geocoder.geocode,当我在geocodeAddress的末尾添加console.log时,它完全跳过了geocoder.geocode。为什么会这样,因为Firebug中没有显示错误。

最佳答案

提交表单时,它将重新加载页面,并且永远不会调用地址解析器功能。

action="javascript:void(0);"上添加<form>以阻止其重新加载页面,并在onclick上添加<button>事件以调用您的地址解析器函数。

Check this plunker

  <body>
    <form action="javascript:void(0);" id="search">
      <input name="query" type="text" required/>
      <input name="l" type="text" id="address" required/>
      <input name="lnglat" type="text" id="lnglat" />
      <button id="submit" onclick="query()" disabled="true">Submit</button>
    </form>
  </body>

关于javascript - geocoder.geocode()未执行,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/37718074/

10-13 01:22