我创建了一个函数来接受位置输入,将其传递给Google Maps Javascript API V2,然后返回一个纬度/经度/ 归一化的地址,我必须将其拆分为数据库中的不同字段(例如,城市,州,邮政) 。我要求输入至少具有5级/邮政编码精度,以便Google返回的数据始终具有…
这是Google返回的有关JSON对象结构的一些信息。 http://code.google.com/apis/maps/documentation/javascript/v2/services.html#Geocoding_Structured
问题 :在某些情况下,Placemark.AddressDetails将不包含邮政编码,而汇总的Placemark.address将包含邮政编码。
例如,以下输入示例将在Placemark.address内返回邮政编码,但不会在Placemark.AddressDetails中返回邮政编码。
这是我的故障排除代码:
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script> <!-- You must insert your maps API script here. --> <script language="javascript" type="text/javascript" src="http://www.json.org/json2.js"></script> <script type="text/javascript"> $(document).ready(function() { var geocoder = new GClientGeocoder(); $.geolocateAddress = function(address) { geocoder.getLocations(address, function(response) { if (response != null && response.Placemark != undefined) { var placemark = response.Placemark[0]; // Placemark has Post code or higher accuracy -> http://code.google.com/apis/maps/documentation/javascript/v2/reference.html#GGeoAddressAccuracy if (placemark.AddressDetails.Accuracy >= 5) { alert(placemark.address); try { alert(placemark.AddressDetails.Country.AdministrativeArea.SubAdministrativeArea.Locality.PostalCode.PostalCodeNumber); } catch (err) { alert('What the deuce? Why is there no postal code?... I bet you the placemark.address has the postal code.'); alert(JSON.stringify(placemark)); } } else { alert('Sorry, this requires at least a postal code input for accuracy') } } else { alert('Failed to geo locate address'); } }); }; $("#location").blur(function(event) { var address = $("#location").val(); $.geolocateAddress(address); }); }); </script> <form action="" method="get"> <input title="Location" type="text" value="" id="location" /> </form>
ew …关于Google Maps地标的架构,我是否还不了解?通过升级到Google Maps Javascript API V3是否可以解决此问题?(V2 JSON对象似乎更直观IMO) http://code.google.com/apis/maps/documentation/javascript/services.html
我要为此丢下毛巾。希望有人可以帮忙!
自从地理编码服务存在以来,这一直是一个问题。
有关背景知识,请参阅我在2008年发布到问题跟踪器的“错误报告/功能请求”:
http://code.google.com/p/gmaps-api- issues/issues/detail?id=606
在那个话题中,帕梅拉·福克斯(Pamela Fox)和索尔·米切尔(Thor Mitchell)是Google的员工,当时他们是地图团队的成员。
一年半后,谷歌做出了一些改进:
https://groups.google.com/group/google-maps- api/browse_thread/thread/4d0ade19dadcda4f#
情况有了很大改善,但是地理编码并不是一门精确的科学。
无论如何,您可能使用的是旧版本的地址解析器,因为我收到了与此请求相关的邮政编码:
http://maps.google.com/maps/api/geocode/xml?sensor=false&address=10437%20Innovation%20Drive、%20Milwaukee、%20WI
那是一个直接的http请求,但是API V3应该返回相同的数据。