我的谷歌地图上有一个draggrabble标记,在infowindow显示街道和城镇
否则我在拖动标记时使用此代码在表单中获取新的lng e lat
var geocoder = new google.maps.Geocoder;
function geocodeLatLng(geocoder, map, infowindow) {
var input = document.getElementById('latlng').value;
var latlngStr = input.split(',', 2);
var latlng = {lat: parseFloat(latlngStr[0]), lng: parseFloat(latlngStr[1])};
geocoder.geocode({'location': latlng}, function(results, status) {
if (status === google.maps.GeocoderStatus.OK) {
if (results[1]) {
infowindow.setContent(results[0].formatted_address);
infowindow.open(map, marker);
} else {
window.alert('No results found');
}
} else {
window.alert('Geocoder failed due to: ' + status);
}
});
}
google.maps.event.addListener(marker, 'dragend', function (event) {
document.getElementById("lat").value = this.getPosition().lat();
document.getElementById("lng").value = this.getPosition().lng();
document.getElementById("latlng").value = this.getPosition().lat()+','+this.getPosition().lng();
geocodeLatLng(geocoder, map, infowindow);
});
在输入lng,lat,latlng都可以,所以值更改移动标记,但我可以确定其他2个输入的值是城市和街道
我正在寻找像
这样的东西document.getElementById("address").value = this.address;
document.getElementById("city").value = this.city;
答案 0 :(得分:1)
结果组件包含元素organized in this way
results[0].components
通过
过滤第n个结果[0] .components [n] .types路线匹配路线的长或短名称。
位置与地区和子地区类型相匹配。
administrative_area 匹配所有administrative_area级别(administrative_area_level_3.political = town / city,administrative_area_level_2.political = province / county,administrative_area_level_1.political = country)
postal_code 匹配postal_code和postal_code_prefix。
国家/地区匹配国家/地区名称或双字母ISO 3166-1国家/地区代码。
你可以在
中得到你需要的东西 result[0].components[n].long_name
如果你只想要地方性,你应该这样迭代
for (var i=0; i < results[0].address_components.length; i++ ) {
if (results[0].address_components[i].types == 'locality,political') {
window.alert(results[0].address_components[i].long_name);
};
}