所以我使用Google Map APIv3的地理编码服务。我限制搜索瑞士/ CH'。
但是当我输入像!x这样的无效字符时!或xz等,我没有得到“无效的地址”#39;相反,我得到了瑞士'结果是address_components
数组,但它返回“无效地址”#39;如果没有适用国家限制。
但我想要国家/地区限制并返回错误结果,如果用户输入的内容无效。请参阅下面的“我的代码”。
我的代码:
function placeSearchBox() {
var searchBoxText = document.getElementById('locationSearch').value;
console.log('placeboxText',searchBoxText);
if (searchBoxText.length > 0) {
var geocoder = new google.maps.Geocoder();
geocoder.geocode({
address: searchBoxText,
componentRestrictions: {
country: 'CH'
}
}, function (data, status) {
console.log(data);
if (status === google.maps.GeocoderStatus.OK && data.length > 0) {
searchResultOfGmapObj = data[0];
dispalySearchResult(data[0]);
console.log('GeoCodedAddress',data[0]);
vm.site.SiteAddress = searchBoxText;
} else alert("Invalid address");
});
}
}
那为什么不返回无效地址或错误状态?
答案 0 :(得分:0)
作为解决这个问题的解决方法我做了以下,但如果有人能说出这个问题的原因和不同的解决方案请分享。
function placeSearchBox() {
var searchBoxText = document.getElementById('location-search').value;
console.log('placeboxText',searchBoxText);
if (searchBoxText.length > 0) {
var geocoder = new google.maps.Geocoder();
geocoder.geocode({
address: searchBoxText,
componentRestrictions: {
country: 'CH'
}
}, function (data, status) {
console.log(data,status,searchBoxText);
if (status === google.maps.GeocoderStatus.OK && data.length > 0) {
searchResultOfGmapObj = data[0];
var searchText = searchBoxText.toLowerCase();
if(searchText != 'switzerland' && searchResultOfGmapObj.address_components.length == 1 && searchResultOfGmapObj.address_components[0].long_name == 'Switzerland'){
alert("Invalid address");
}else{
dispalySearchResult(data[0]);
console.log('GeoCodedAddress',data[0]);
vm.site.SiteAddress = searchBoxText;
}
}
});
}
}
所以我只添加了以下代码块,
var searchText = searchBoxText.toLowerCase();
if(searchText != 'switzerland' && searchResultOfGmapObj.address_components.length == 1 && searchResultOfGmapObj.address_components[0].long_name == 'Switzerland'){
alert("Invalid address");
}