我有一個谷歌地圖,它有一個標記,讓人們可以移動它。當他們做我試圖扭轉地理編碼的位置到一個適當的地址,但我只想真正想要的城鎮和國家,我不希望郵編返回反向地理編碼 - 僅返回城鎮/城市或國家
是否有可能只是得到當地沒有必須使用正則表達式來刪除郵政編碼 - 這可能會很困難!
預先感謝
我有一個谷歌地圖,它有一個標記,讓人們可以移動它。當他們做我試圖扭轉地理編碼的位置到一個適當的地址,但我只想真正想要的城鎮和國家,我不希望郵編返回反向地理編碼 - 僅返回城鎮/城市或國家
是否有可能只是得到當地沒有必須使用正則表達式來刪除郵政編碼 - 這可能會很困難!
預先感謝
的響應中沒有隻返回地址,還包含address_components,與位置,例如的具體細節的陣列國家,城市,街道等(請參閱https://developers.google.com/maps/documentation/geocoding/#JSON)
從該陣列中提取所需的組件。
Reverse GeoCoding返回一個包含少量對象的address_components數組。 (您可以在控制檯中打印此對象以獲得該感覺。) 從此陣列中提取所需的信息非常簡單。 現在看看代碼 -
function getLatLong(position) {
geocoder = new google.maps.Geocoder();
var latitude = position.coords.latitude;
var longitude = position.coords.longitude;
// Reverse Geocoding, Location name from co-ordinates.
var latlng = new google.maps.LatLng(latitude, longitude);
geocoder.geocode({'latLng': latlng}, function(results, status) {
if (status == google.maps.GeocoderStatus.OK) {
if (results[0]) {
var components=results[0].address_components;
for (var component=0;component<(components.length);component++){
if(components[component].types[0]=="administrative_area_level_1"){
var admin_area=components[component].long_name;
}
if(components[component].types[0]=="country"){
var country=components[component].long_name;
}
if(components[component].types[0]=="postal_code"){
var postal_code=components[component].long_name;
}
}
}
}
}
}
我想你可以!
if (status == google.maps.GeocoderStatus.OK) {
if (results[0]) {
for (var i = 0; i < results.length; i++) {
if (results[i].types[0] === "locality") {
var city = results[i].address_components[0].short_name;
var state = results[i].address_components[2].short_name;
alert('Serial=' + i+ ' city=' + city+ ' state=' + state)
};
};
};
};
嗨Dr.Molle,謝謝你的幫助。我試着提醒結果,但我只是變得不確定 - 我使用alert(results [1] .address_components ['country']);是對的嗎? –
不,您無法直接按其類型訪問adress_components,您必須迭代所有address_components並獲取組件類型設置爲所需值的組件。請參閱:http://stackoverflow.com/questions/6542788/parsing-city-state-from-google-maps-request/6543029#6543029 –