2017-08-13 1 views
-1

Google Map APIv3からジオコードサービスを使用しています。私は「スイス/ CH」周辺の検索を制限しています。コンポーネント制限が適用されているときにジオコードが「無効なアドレス」を返さないのはなぜですか?

しかし、私は!xのような無効な文字を入力したとき!私は「無効なアドレス」を得ていませんでした。代わりにaddress_components配列の結果として「スイス」を取得しましたが、国の制限が適用されていないと「無効なアドレス」が返されます。

しかし、私は国の制限が欲しいと思います。また、ユーザーが何か無効な文字を入力した場合は、エラーの結果を返します。私のコードは以下のとおりです。

マイコード:

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

この問題の回避策として、私は次のようにしましたが、誰かがこの問題の理由を伝えることができたら、別の解決方法を教えてください。

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"); 
} 
を追加しているだから、次のコードブロック
関連する問題