Google 地图 API 搜索特定国家/地区的邮政编码
Google maps API Searching postcodes in a specific country
我正在尝试设置一个 Post 代码以获得经纬度坐标并在其上放置一个标记。到目前为止,一切都很好。
当我输入邮政编码时,问题就出现了,它最终在世界的另一个地方的某个地方做了一个标记。
例如:我输入 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);
}
});
}
谢谢
要将结果限制在特定国家/地区,您可以应用组件过滤:
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 工具查看正在运行的组件过滤:
希望对您有所帮助!
我正在尝试设置一个 Post 代码以获得经纬度坐标并在其上放置一个标记。到目前为止,一切都很好。
当我输入邮政编码时,问题就出现了,它最终在世界的另一个地方的某个地方做了一个标记。
例如:我输入 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);
}
});
}
谢谢
要将结果限制在特定国家/地区,您可以应用组件过滤:
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 工具查看正在运行的组件过滤:
希望对您有所帮助!