0

Google Places APIに接続されたテキストフィールドを含むフォームがあります。私は、認識されたアドレスが入力されると、入力された場所の緯度/経度位置を取得し、値を他のフォームフィールドにバッシュして、別のAPI呼び出しなしでバックエンドに保存できるようにします。いくつかのデバッグログと一緒に、次の初期化コードは、このために正常に動作して(愚かなフィールドIDの謝罪、私はDrupalのを非難...)ユーザーが無効な場所をGoogleプレイスのフィールドに入力したことを検出するにはどうすればよいですか?

function placesInitialize() { 
     var input = document.getElementById('edit-field-google-location-und-0-value'); 
     var autocomplete = new google.maps.places.Autocomplete(input); 

     google.maps.event.addListener(autocomplete, 'place_changed', function() { 
      var geocoder = new google.maps.Geocoder(); 
      var address = document.getElementById('edit-field-google-location-und-0-value').value; 

      geocoder.geocode({ 'address': address }, function (results, status) { 
       console.log('inside geocoder.geocode'); 
       if (status == google.maps.GeocoderStatus.OK) { 
        var latitude = results[0].geometry.location.lat(); 
        var longitude = results[0].geometry.location.lng(); 
        console.log('lat and long = ' + latitude + ' and ' + longitude); 
        $('#edit-field-location-latitude-und-0-value').val(latitude); 
        $('#edit-field-location-longitude-und-0-value').val(longitude); 
       } 
       else { 
        console.log('GeocoderStatus not ok:'); 
        console.log(google.maps.GeocoderStatus); 
       } 
      }); 
     }); 
    } 
    google.maps.event.addDomListener(window, 'load', placesInitialize); 

今、ユーザーが認識されない何かを入力した場合プレイスでは、緯度と経度のフィールドをクリアしたい。それが私の問題です。これが起こったことをどうやって検出しますか?私はこれがgoogle.maps.GeocoderStatusによってOKではないことが通知されていると思っていましたが、これらのログは決して発動しません。実際、この状況では、 "inside geocoder.geocode"というメッセージも表示されません。

私は見ましたが、この状況でgoogle.mapsがスローする可能性のあるイベントはまだ見つかりませんでした。私は入力フィールドのblurイベントから何かをぶら下げることができますが、それが何をするのかはわかりません(入力フィールドには何かがありますが、有効なものではありません)。私は、ジオコーダが呼び出されたかどうかを追跡するセマフォを持つことを考えましたが、ユーザーが最初に有効なものを入力して無効なものに置き換えた場合、「無効なエントリ」状態を検出する必要があります。

とにかく:考えていることはありますか?ありがとう!

+1

本当に?ドライブバイダウン投票?この投稿に何か問題がある場合、誰かが私を手がかりにしますか?私は本当にそれを見ないので... –

答えて

0

place_changeは、ユーザーがプルダウンで候補の1つを選択した場合にのみ発生します。 places-libraryが提案を返さない場合、何も起こりません。

オートコンプリートでは、候補にアクセスできないため(選択しない限り)、Autocomplete-Serviceで提案をリクエストできます(提案があるかどうかを確認できます)。

あなたが返さ提案に基づいて独自に続い実装することがオートコンプリート機能化(例えば。jQueryUI経由)

関連する問題