Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript “为什么地理编码不返回”;无效地址“;何时应用组件限制?_Javascript_Google Maps_Google Maps Api 3_Geocode - Fatal编程技术网

Javascript “为什么地理编码不返回”;无效地址“;何时应用组件限制?

Javascript “为什么地理编码不返回”;无效地址“;何时应用组件限制?,javascript,google-maps,google-maps-api-3,geocode,Javascript,Google Maps,Google Maps Api 3,Geocode,所以我使用的是谷歌地图APIv3的地理编码服务。我限制了对“瑞士/中国”的搜索 但是当我输入无效字符时,比如!x!或xz等,我没有得到“无效地址”,而是得到了“瑞士”,结果是地址\u组件数组,但如果未应用国家/地区限制,它将返回“无效地址” 但如果用户键入了无效的内容,我需要国家/地区限制并返回错误结果。请参阅下面的代码 我的代码: function placeSearchBox() { var searchBoxText = document.getElementByI

所以我使用的是谷歌地图APIv3的地理编码服务。我限制了对“瑞士/中国”的搜索

但是当我输入无效字符时,比如!x!或xz等,我没有得到“无效地址”,而是得到了“瑞士”,结果是
地址\u组件
数组,但如果未应用国家/地区限制,它将返回“无效地址”

但如果用户键入了无效的内容,我需要国家/地区限制并返回错误结果。请参阅下面的代码

我的代码:

    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");
            });
        }
    }

那么,为什么它没有返回无效地址或错误状态呢?

作为解决此问题的方法,我做了以下工作,但如果有人能说出此问题的原因和不同的解决方案,请分享

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");
}