[英]Google maps geocoding service
我正在使用Google Maps API地理编码服务来获取位置的国家/地区名称,邮政编码等。
JSON响应:
{
"name": "1600 Amphitheatre Parkway, Mountain View, CA, USA",
"Status": {
"code": 200,
"request": "geocode"
},
"Placemark": [
{
"address": "1600 Amphitheatre Pkwy, Mountain View, CA 94043, USA",
"AddressDetails": {
"Country": {
"CountryNameCode": "US",
"AdministrativeArea": {
"AdministrativeAreaName": "CA",
"SubAdministrativeArea": {
"SubAdministrativeAreaName": "Santa Clara",
"Locality": {
"LocalityName": "Mountain View",
"Thoroughfare": {
"ThoroughfareName": "1600 Amphitheatre Pkwy"
},
"PostalCode": {
"PostalCodeNumber": "94043"
}
}
}
}
},
"Accuracy": 8
},
"Point": {
"coordinates": [-122.083739, 37.423021, 0]
}
}
]
}
这是问题所在-有时(尽管检查未定义),但我收到一个错误,指出国家/地区未定义。
var country = document.getElementById("id_country");
if(place.AddressDetails.Country.CountryNameCode != undefined){
country.value = place.AddressDetails.Country.CountryNameCode;
}
另外,我如何访问PostalCodeNumber?
place.AddressDetails.AdministrativeArea.SubAdministrativeArea.PostalCode.PostalCodeNumber
在大多数情况下,我尝试执行以下代码:
place.AddressDetails.AdministrativeArea. //etc.
我什么都没有,我也不知道如何解释,但是我的队友写了一个脚本来手动解析它,对我们来说很好用(尽管代码很多)。 您可以尝试对其进行编辑并对其进行编辑,以获取其余缺少的字段(您的邮政编码):
//[MARKEL]: Returns object type: obj.ad1, obj.ad2, obj.ad3, obj.state, obj.country
function ResolveGeoCode(point, returnCall) {
//[MARKEL]: initialize geocoder
geocoder = new GClientGeocoder();
geocoder.getLocations(point, function getAddress(response) {
//[MARKEL]: Create a object to call proxy location Set location variable to be global
//because it will be assigned in call-back function
var Location;
if (!response || response.Status.code != 200) {
//MARKEL: [TODO] => Set code here to alert that the address id invalid
}
else {
place = response.Placemark[0];
place = response.Placemark[0];
point = new GLatLng(place.Point.coordinates[1],
place.Point.coordinates[0]);
var len = place.address.toString().split(",").length;
var array = place.address.toString().split(",");
//alert(place.address);
//alert(len);
if (len >= 3) {
if (array[0].length > 2) {
Location = {
Street: array[0],
State: array[1],
Country: array[2]
};
}
else {
Location = {
Street: array[1],
State: "",
Country: array[2]
};
}
}
else if (len == 2) {
Location = {
Street: "",
State: array[0],
Country: array[1]
};
}
else if (len == 1) {
Location = {
Sreet: "",
State: "",
Country: array[0]
};
}
else {
//[MARKEL]: [TODO] => Place code here to indicate that the address is not valid.
}
}
returnCall(Location);
return Location;
});
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.