gpt4 book ai didi

javascript - Google Maps API 有时不会在 AddressDetails 中返回 PostalCode

转载 作者:行者123 更新时间:2023-11-30 06:07:18 27 4
gpt4 key购买 nike

我创建了一个函数来获取位置输入,将其传递给 Google Maps Javascript API V2,并返回纬度/经度/规范化地址,我必须将其拆分为数据库中的不同字段(即城市,州、邮政)。我至少需要一个 level 5/post code accuracy用于输入,以便从 Google 返回的数据将始终具有...

  • 国家
  • 城市(地区)
  • 州(行政区域)
  • 邮政
  • 纬度/经度

以下是有关 Google 返回的 JSON 对象结构的一些信息。 http://code.google.com/apis/maps/documentation/javascript/v2/services.html#Geocoding_Structured

问题:在某些情况下,Placemark.AddressDetails 将不包含邮政编码,而汇总的 Placemark.address 将包含邮政编码。

例如,以下输入示例将在 Placemark.address 中返回邮政编码,但不会在 Placemark.AddressDetails 中返回;

  • 10437 Innovation Drive,密尔沃基,WI 53226
  • 现代艺术博物馆
  • 帝国大厦 --> 这实际上返回了 SubAdministrativeArea.Locality 下一些奇怪的“DependentLocality”中的邮政编码

这是我的故障排除代码:

<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>

哎呀...我对 Google map 地标的架构有什么不了解的地方吗?我可以通过升级到 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 map 团队的员工。

一年半后,谷歌做出了一些改进:

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 应该返回相同的数据。

关于javascript - Google Maps API 有时不会在 AddressDetails 中返回 PostalCode,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3479938/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com