我正在使用Google地理编码服务来验证我们系统中输入的城市名称(加上地区和国家/地区)是否存在,以及获取纬度/经度。
但是,我发现如果你输了一个拼写错误就会“猜测”,即使你犯了错误也会回复。
例如,对“Beverton,Ontario,Canada”的请求返回Beaverton的纬度/经度,但没有迹象表明您提供了错误的城市名称。
我正在使用CSV响应类型,并获得200响应代码。
我可以阻止服务这样做,或者更好的是,找出它是否有?
编辑:澄清...... Google正在纠正输入(当我希望它失败时),我需要知道它是否已经完成了这项工作。
答案 0 :(得分:3)
如果地理编码器认为您有拼写错误,则无法通知您。我同意Saul的回答,你最好的办法是检查你的反应。
我只是想指出,你必须针对几个响应值检查输入的几个元素,以便找到应该匹配的元素。在这种情况下,在“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>
<强>更新强>
这可能无法实际实施。如果您的输入是“Beverton,Ontario,Canada”,您如何知道要检查的这三个单词中的哪一个?其中两个将匹配得很好。如果他们以不同的顺序输入怎么办?
答案 1 :(得分:0)
是否以“200成功代码”回应?它可能会给你一个不同的状态代码。
以下是google返回的不同状态代码:http://code.google.com/apis/maps/documentation/reference.html#GGeoStatusCode
答案 2 :(得分:0)
注意:请参阅上面的answer by @Chris B。克里斯指出,这可能无法实施。
您是否必须使用CSV响应类型?如果没有,其他响应类型(如KML)会提供足够的详细信息来确定坐标所指的位置。您可以根据响应的LocalityName元素验证输入。
<kml xmlns="http://earth.google.com/kml/2.0">
<Response>
<name>1600 amphitheatre mountain view ca</name>
<Status>
<code>200</code>
<request>geocode</request>
</Status>
<Placemark>
<address>
1600 Amphitheatre Pkwy, Mountain View, CA 94043, USA
</address>
<AddressDetails Accuracy="8">
<Country>
<CountryNameCode>US</CountryNameCode>
<AdministrativeArea>
<AdministrativeAreaName>CA</AdministrativeAreaName>
<SubAdministrativeArea>
<SubAdministrativeAreaName>Santa Clara</SubAdministrativeAreaName>
<Locality>
<LocalityName>Mountain View</LocalityName>
<Thoroughfare>
<ThoroughfareName>1600 Amphitheatre Pkwy</ThoroughfareName>
</Thoroughfare>
<PostalCode>
<PostalCodeNumber>94043</PostalCodeNumber>
</PostalCode>
</Locality>
</SubAdministrativeArea>
</AdministrativeArea>
</Country>
</AddressDetails>
<Point>
<coordinates>-122.083739,37.423021,0</coordinates>
</Point>
</Placemark>
</Response>
</kml>