我试图设置一个邮政编码,以获得Lat和Long Coordinates并在其上放置一个标记。到现在为止,一切都很好。
当我提供邮政编码输入并且最终在世界的另一个地方制作标记时,问题就出现了。
Ex:我输入2975-435然后我得到: https://maps.googleapis.com/maps/api/geocode/json?address=2975-435&key=YOURKEY
"formatted_address" : "Balbey Mahallesi, 435. Sk., 07040 Muratpaşa/Antalya, Turquia",
我想让这个邮政编码只在葡萄牙进行搜索。
https://maps.googleapis.com/maps/api/geocode/json?address=2975-435+PT 这样我得到了:
"formatted_address" : "2975 Q.ta do Conde, Portugal",
正是我想要的。
问题是,如何在JS代码中创建它? 这是我到现在为止的代码
function codeAddress () {
var lat = '';
var lng = '';
var address = document.getElementById("cp").value;
geocoder.geocode( { 'address': address},
function(results, status) {
if (status == google.maps.GeocoderStatus.OK) {
lat = results[0].geometry.location.lat();
lng = results[0].geometry.location.lng();
//Just to keep it stored
positionArray.push(new google.maps.LatLng(lat,lng));
//Make the marker
new google.maps.Marker({
position:new google.maps.LatLng(lat,lng),
map:map
});
}else {
alert("Geocode was not successful for the following reason: " + status);
}
});
}
谢谢
答案 0 :(得分:3)
要将结果限制在某个国家/地区,您可以应用组件过滤:
https://developers.google.com/maps/documentation/javascript/geocoding#ComponentFiltering
因此,您的JavaScript代码将是
function codeAddress () {
var lat = '';
var lng = '';
var address = document.getElementById("cp").value;
geocoder.geocode( {
'address': address,
componentRestrictions: {
country: 'PT'
}
},
function(results, status) {
if (status == google.maps.GeocoderStatus.OK) {
lat = results[0].geometry.location.lat();
lng = results[0].geometry.location.lng();
//Just to keep it stored
positionArray.push(new google.maps.LatLng(lat,lng));
//Make the marker
new google.maps.Marker({
position:new google.maps.LatLng(lat,lng),
map:map
});
}else {
alert("Geocode was not successful for the following reason: " + status);
}
});
}
您可以使用Geocoder工具查看正在进行的组件过滤:
希望它有所帮助!