首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >geocoder.geocode()未被执行

geocoder.geocode()未被执行
EN

Stack Overflow用户
提问于 2016-06-09 06:10:19
回答 2查看 1.6K关注 0票数 1

我使用地理编码API将一个地址转换为long和lat,然后用接收到的坐标分配一个隐藏的输入值,而不是使用这些数据在地图上绘图。

我使用面向javascript库的客户机,这里是我的javascript,稍微修改了一下。

代码语言: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中看到输出时,我可以从geocoder.geocode中看到"initmap“、"geocodeAddresses”。

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

耽误您时间,实在对不起

编辑:看起来好像根本没有运行geocoder.geocode,当我在geocodeAddress的末尾添加一个console.log时,它完全跳过了geocoder.geocode。为什么这是因为在firebug中没有显示错误。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-06-17 17:29:34

当您提交表单时,它将重新加载页面,并且永远不会调用Geo编码器函数。

添加action="javascript:void(0);" on <form>以阻止它重新加载页面,并在<button>上添加onclick事件以调用您的Geo编码器函数。

检查一下这个柱塞

代码语言:javascript
复制
  <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>
票数 1
EN

Stack Overflow用户

发布于 2016-06-16 03:11:06

确保Google脚本在javascript之前,并且您不需要在URL中回调

<script src="https://maps.googleapis.com/maps/api/js?key=AIzaSyD77MKXXXX-T_xxxewvLrhFqn5cA0m-xxx"></script>

代码语言:javascript
复制
function geoCode(street,city,state,zip){
    var geocoder = new google.maps.Geocoder();
    var address = street + ' ' + city + ' ' + state + ' ' + zip;
    geocoder.geocode({'address': address}, function(results, status) {
        if (status === google.maps.GeocoderStatus.OK) {
            var myResult = results[0].geometry.location; // reference LatLng value
            var myArray = myResult.toString().slice(1, -1).split(', ');
            alert (parseFloat(myArray[0]) + parseFloat(myArray[1]));

        } else {
            alert('Map location not found.  Please adjust address.  Error: ', status);
        }
    });
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37718074

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档