将地址转换为地理编码,只返回“未定义”,为什么?

发布于 2024-12-11 06:14:30 字数 291 浏览 0 评论 0原文

这就是我所拥有的:

http://jsfiddle.net/JhCKW/1/

我正在使用 Google 地图v3,地理编码。

我做了一个函数 showAddress( param )。这需要参数,检查它是否是一个地址,如果是,则返回cords,如果不是,则返回0。

如果你检查链接,你可以看到我已经为此编写了代码,但我只是收到一条警报“未定义” ”。

这里有什么问题吗?

This is what i have:

http://jsfiddle.net/JhCKW/1/

Im using Google maps v3, Geocode.

I made a function showAddress( param ). This takes the param, check if its a address if it is then it returns cords and if its not it returns 0.

If you check the link, you can see I have written the code for this, but I just get a alert "undefined".

What is wrong here?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

猫卆 2024-12-18 06:14:30

呵呵,我终于明白这个案子了。问题不在于谷歌地图。
您不是从 showAddress 返回结果,而是从回调返回结果。所以,它实际上无处可去。您还需要使用回调来显示结果。就像这样:

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.6.4/jquery.min.js"></script>
<script src="http://maps.google.com/maps/api/js?sensor=false" type="text/javascript"></script>

<script type="text/javascript" src="http://maps.googleapis.com/maps/api/js?libraries=geometry&sensor=false"></script>
<script type="text/javascript">
  var geocoder;
  function showAddress(address, callback)
  {
    if (typeof(geocoder) == 'undefined') geocoder = new google.maps.Geocoder();

    geocoder.geocode( { 'address': address}, function(results, status) {
      if (status == google.maps.GeocoderStatus.OK) {
        callback(results[0].geometry.location);
      } else {
        callback(0);
      }
    });
  }

  $(document).ready(function(){
    $('#address').blur(function(){
      showAddress( $('#address').val(), function(result)
      {
        if (result === 0)
          alert('Adressen not found');
        else{
          alert(result);
          $('#cords').val( result );
        }
      });
    });
  });
</script>

<input type="text" name="address" id="address">

您可以在这里检查它的工作情况: http://jsfiddle.net/BgDQc/2/

Oh, I've finally realised the case. Problem is not in Google Maps.
You are returning result not from showAddress but from callback. So, it's actually goes nowhere. You need to display your result using callback also. Just like this:

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.6.4/jquery.min.js"></script>
<script src="http://maps.google.com/maps/api/js?sensor=false" type="text/javascript"></script>

<script type="text/javascript" src="http://maps.googleapis.com/maps/api/js?libraries=geometry&sensor=false"></script>
<script type="text/javascript">
  var geocoder;
  function showAddress(address, callback)
  {
    if (typeof(geocoder) == 'undefined') geocoder = new google.maps.Geocoder();

    geocoder.geocode( { 'address': address}, function(results, status) {
      if (status == google.maps.GeocoderStatus.OK) {
        callback(results[0].geometry.location);
      } else {
        callback(0);
      }
    });
  }

  $(document).ready(function(){
    $('#address').blur(function(){
      showAddress( $('#address').val(), function(result)
      {
        if (result === 0)
          alert('Adressen not found');
        else{
          alert(result);
          $('#cords').val( result );
        }
      });
    });
  });
</script>

<input type="text" name="address" id="address">

You can check it working here: http://jsfiddle.net/BgDQc/2/

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文