【问题标题】:Geocode API does not recognize address, although google maps doesGeocode API 无法识别地址,尽管谷歌地图可以
【发布时间】:2017-05-05 19:28:25
【问题描述】:

我在一个项目中使用 Geocode API,用户可以通过文本输入来输入地址。该地址是使用 Google Maps API 找到的,但是 Geocode API 无法找到该地址。奇怪的是,它对某些地址有效,但对另一些地址无效。

例如,地址 Courchevel, Saint-Bon-Tarentaise, France 可以在 Google 地图上找到,但不能使用地理编码 URL:https://maps-api-ssl.google.com/maps/api/geocode/json?address=Courchevel%2C%20Saint-Bon-Tarentaise%2C%20France&sensor=false&client=gme-kickzag&signature=MY_SIGNATURE=,其中MY_SIGNATURE 给出正确。

另一方面,地址 瑞士巴塞尔 工作正常:https://maps-api-ssl.google.com/maps/api/geocode/json?address=Basel%2C%20Switzerland&sensor=false&client=gme-kickzag&signature=MY_SIGNATURE=

非常感谢任何答案!

【问题讨论】:

    标签: google-maps google-maps-api-3 geocode


    【解决方案1】:

    您可以使用Places Service 并向其传递地点ID。唯一要注意的是,您必须向服务传递地图实例或 html 元素节点。这是一个例子:

    // "map" is a google map you have created
    var service = new google.maps.places.PlacesService(map);
    
    var request = {
      placeId: 'ChIJN1t_tDeuEmsRUsoyG83frY4'
    };
    
    service.getDetails(request, callback);
    
    function callback(place, status) {
      if (status == google.maps.places.PlacesServiceStatus.OK) {
        var lat = results.geometry.location.lat(),
            long = results.geometry.location.lng();
        console.log('lat & long', lat, long);
      }
    }
    

    在我的情况下,因为我没有使用地图,所以我将它传递给一个 html 节点,例如

    var details = document.getElementById('details');
    var service = new google.maps.places.PlacesService(details);
    

    要遵守条款,您不能隐藏该元素。但是,该服务似乎并没有增强它。

    【讨论】:

    • 感谢您的回答。但是,问题似乎出在地理编码本身。根据我从一些研究中了解到的情况,Geocode 有时难以将地址转换为经度和纬度。
    • @Shend 你应该为用户输入使用自动完成服务。这非常容易。您可以让它为您呈现 UI,或者只返回结果以便您处理 UI 部分。然后你有一个placeId,它可以保证你的纬度/经度。
    【解决方案2】:

    搜索地址的主题很复杂。一些困难的事情包括:

    SmartyStreets 的FAQ articles 中有很多关于地址和搜索的有用信息。

    关于你的问题,你提出了一个有趣的案例。 (不太清楚你的问题是什么,但关于谷歌 API 的主题......)谷歌有许多产品,这些产品是为了解决特定问题而创建的。在一种情况下,谷歌可以帮助用户探索一个区域:他们想找到一个地区并显示餐厅和活动等。在另一种情况下,谷歌最好找到一个准确的地理编码位置。因此,对于 Google API 用户来说,思考他们的问题和目标并正确决定使用哪些工具非常重要。您可能会发现 Google API Picker 很有用。

    公平披露:我在 SmartyStreets 工作,这是一家专注于地址验证的公司。

    【讨论】:

      猜你喜欢
      • 2013-10-28
      • 2018-11-14
      • 1970-01-01
      • 2017-08-01
      • 1970-01-01
      • 2012-11-25
      • 1970-01-01
      • 2014-01-18
      • 1970-01-01
      相关资源
      最近更新 更多