【问题标题】:Google Places API worse then web search?Google Places API 比网络搜索更糟糕?
【发布时间】:2015-03-12 19:54:39
【问题描述】:

我正在尝试通过 java 使用 Google Places API 对字符串执行文本搜索,并检索最有可能被搜索的地点的地址。我正在为美国的几个知名地点(例如医院和学校)执行此操作。下面是一个有问题的示例搜索。我拿出了我的 API 密钥。

https://maps.googleapis.com/maps/api/place/textsearch/xml?query=evanston+township+high+school+evanston,+il+usa&key=***********

我采用此查询的第一个结果的 formatted_address。这通常是准确的,但我注意到有时它是不正确的。例如,在此查询中没有提供街道地址或邮政编码。我试过其他地方,我得到的只是“美国”或该字段中没有实际数字的地址。但有趣的是,如果我在 Google 中搜索完全相同的字符串,则确实会出现真实地址。以下是 API 的结果和网络上的图片:

<PlaceSearchResponse>
<status>OK</status>
<result>
<name>Evanston Township High School District 202</name>
<type>political</type>
<formatted_address>
Evanston Township High School District 202, IL, USA <-------- returned by API
</formatted_address>
<geometry>
<location>
<lat>42.0450722</lat>
<lng>-87.6876969</lng>
</location>
<viewport>
<southwest>
<lat>42.0190300</lat>
<lng>-87.7326600</lng>
</southwest>
<northeast>
<lat>42.0717318</lat>
<lng>-87.6665614</lng>
</northeast>
</viewport>
</geometry>
<icon>
http://maps.gstatic.com/mapfiles/place_api/icons/geocode-71.png
</icon>
<reference>
CqQBnwAAAMCLODi7Iisb_q4ilw73x1TGrw0Lj1bNS1sdZsmdmEhgKDslWJjlvXeVgxzLLdPWh-     vwaTV9by0aATpWwomOcB55rShH1FiL2UJPBIh9Db7OtJq9ks7qIhYoAvFBf-yaZ5kQo9amqOa8l3WU2V85haHQz80MvblSwGn6WNFHdPGwWxwNjYR3henBT4VuB9h5Od5BLM6PndAsvslfygg0hFQSECqRDvACMS5yfmZ-3d4epaUaFIgkXjNNIYuMwRLmfHmvSPVddoRU
</reference>
<id>82b50159171c4e7686f6b9b05705feee7b2b1305</id>
<place_id>ChIJ5fg1oQLQD4gRqZmJdt4oE7w</place_id>
</result>

然而,

从谷歌搜索结果中抓取可以给我更准确的地址似乎很荒谬。是这种情况还是我忽略了什么?非常感谢任何帮助。

【问题讨论】:

    标签: java xml google-maps google-maps-markers google-places-api


    【解决方案1】:

    这可能只是 Places API 中的错误数据。您可以提交bug 以尝试修复它。同时,您可以manually add 将该位置添加到您的应用程序中。

    示例代码:

    POST https://maps.googleapis.com/maps/api/place/add/json?key=AddYourOwnKeyHere HTTP/1.1
    Host: maps.googleapis.com
    
    {
      "location": {
        "lat": -33.8669710,
        "lng": 151.1958750
      },
      "accuracy": 50,
      "name": "Google Shoes!",
      "phone_number": "(02) 9374 4000",
      "address": "48 Pirrama Road, Pyrmont, NSW 2009, Australia",
      "types": ["shoe_store"],
      "website": "http://www.google.com.au/",
      "language": "en-AU"
    }
    

    您也可以尝试对获得的 lat/lng 进行反向地理编码,但我认为这同样不准确。

    【讨论】:

      猜你喜欢
      • 2012-04-03
      • 2017-04-22
      • 1970-01-01
      • 2018-06-27
      • 1970-01-01
      • 2013-06-28
      • 1970-01-01
      • 2014-10-01
      • 2016-05-24
      相关资源
      最近更新 更多