我想知道是否有人能帮助我。我很难在我的地理编码结果的对话框中获得坐标和格式化的地址,尽管我似乎能够抓取城市,国家。
下面是我正在使用的代码:
http://jsfiddle.net/d5DBh/5/
代码var myLatlng = new google.maps.LatLng(31.272410, 0.190898);
// INITALIZATION
function initialize() {
var mapOptions = {
zoom: 4,
center: myLatlng,
mapTypeId: google.maps.MapTypeId.ROADMAP
}
var map = new google.maps.Map(document.getElementById("map-canvas"), mapOptions);
}
// GEOCODE
function codeAddress() {
var address = document.getElementById("address").value;
new google.maps.Geocoder().geocode({
'address': address
}, function (results, status) {
if (status == google.maps.GeocoderStatus.OK) {
if (results[0]) {
var address = "",
city = "",
town = "",
state = "",
country = "",
location = "",
format = "";
for (var i = 0; i < results[0].address_components.length; i++) {
var addr = results[0].address_components[i];
if (addr.types[0] == 'country') country = addr.short_name;
else if (addr.types[0] == 'street_address')
address = address + addr.long_name;
else if (addr.types[0] == 'route')
address = address + addr.long_name;
else if (addr.types[0] == ['administrative_area_level_1'])
state = addr.long_name;
else if (addr.types[0] == ['administrative_area_level_2'])
town = addr.long_name;
else if (addr.types[0] == ['locality'])
city = addr.long_name;
else if (addr.types[0] == ['location'])
location = addr.location;
}
alert('Formated Address: ' + format + 'n' + 'City: ' + city + 'n' + 'Town: ' + town + 'n' + 'State: ' + state + 'n' + 'Country: ' + country + 'n' + 'Coordinates: ' + location);
}
} else {
alert("Error: We could not find this address - please try and different location");
};
});
}
initialize();
document.getElementById("searchItem").onclick = function () {
codeAddress();
return false;
};
另外,因为我是Javascript新手,所以我愿意接受任何关于将其写得更干净的想法。
function getLatLongDetail(myLatlng) {
var geocoder = new google.maps.Geocoder();
geocoder.geocode({ 'latLng': myLatlng },
function (results, status) {
if (status == google.maps.GeocoderStatus.OK) {
if (results[0]) {
var address = "", city = "", state = "", zip = "", country = "", formattedAddress = "";
var lat;
var lng;
for (var i = 0; i < results[0].address_components.length; i++) {
var addr = results[0].address_components[i];
// check if this entry in address_components has a type of country
if (addr.types[0] == 'country')
country = addr.long_name;
else if (addr.types[0] == 'street_address') // address 1
address = address + addr.long_name;
else if (addr.types[0] == 'establishment')
address = address + addr.long_name;
else if (addr.types[0] == 'route') // address 2
address = address + addr.long_name;
else if (addr.types[0] == 'postal_code') // Zip
zip = addr.short_name;
else if (addr.types[0] == ['administrative_area_level_1']) // State
state = addr.long_name;
else if (addr.types[0] == ['locality']) // City
city = addr.long_name;
}
if (results[0].formatted_address != null) {
formattedAddress = results[0].formatted_address;
}
//debugger;
var location = results[0].geometry.location;
lat = location.lat;
lng = location.lng;
alert('City: '+ city + 'n' + 'State: '+ state + 'n' + 'Zip: '+ zip + 'n' + 'Formatted Address: '+ formattedAddress + 'n' + 'Lat: '+ lat + 'n' + 'Lng: '+ lng);
}
}
});
}
注:lat = location.lat;,LNG = location.lng;而不是lat = location.lat();,LNG = location.lng();