Google地理编码服务会返回虚假地址的回复

Buz*_*uzz 7 google-maps geocoding

我正在使用谷歌地理编码服务来验证我们系统中输入的城市名称(加上地区和国家/地区)是否存在,以及获取纬度/经度.

但是,我发现它似乎在猜测你是否输错了,即使你犯了错误也会返回一个回复.

例如,对"Beverton,Ontario,Canada"的请求返回Beaverton的纬度/经度,没有迹象表明您提供了错误的城市名称.

我正在使用CSV响应类型,并获得200响应代码.

我可以阻止服务这样做,或者更好的是,找出它是否有?

编辑:澄清...谷歌正在纠正输入(当我希望它只是失败),我需要知道它是否已经这样做了.

Chr*_*s B 4

地理编码器没有任何方式让您知道它是否认为您有拼写错误。我同意索尔的回答,你最好的选择是根据回复检查你的查询。

我只是想指出,您必须根据多个响应值检查输入的多个元素,以便找到应该匹配的元素。在本例中,在“DependentLocalityName”内找到“Beaverton”。

<?xml version="1.0" encoding="UTF-8" ?>
<kml xmlns="http://earth.google.com/kml/2.0"><Response>
  <name>Beverton, Ontario, Canada</name>
  <Status>
    <code>200</code>
    <request>geocode</request>
  </Status>
  <Placemark id="p1">

    <address>Beaverton, Brock, ON, Canada</address>
    <AddressDetails Accuracy="4" xmlns="urn:oasis:names:tc:ciq:xsdschema:xAL:2.0"><Country><CountryNameCode>CA</CountryNameCode><CountryName>Canada</CountryName><AdministrativeArea><AdministrativeAreaName>ON</AdministrativeAreaName><SubAdministrativeArea><SubAdministrativeAreaName>Durham Regional Municipality</SubAdministrativeAreaName><Locality><LocalityName>Brock</LocalityName><DependentLocality><DependentLocalityName>Beaverton</DependentLocalityName></DependentLocality></Locality></SubAdministrativeArea></AdministrativeArea></Country></AddressDetails>
    <ExtendedData>
      <LatLonBox north="44.4502166" south="44.4183470" east="-79.1199562" west="-79.1839858" />
    </ExtendedData>

    <Point><coordinates>-79.1519710,44.4342840,0</coordinates></Point>
  </Placemark>
</Response></kml>
Run Code Online (Sandbox Code Playgroud)

更新:

这可能无法实际实施。如果您的输入是“加拿大安大略省贝弗顿”,您如何知道要检查这三个单词中的哪一个?他们两个会很匹配。如果它们以不同的顺序输入怎么办?