2017-04-19 12 views
3

編集テキストから入力を取って地図上の場所を検索しようとしました。 「ユーザーが入力した場所がマップ上のマーカーで指し示されています」よりも次の場所に移動する(または、フォーカスが失われたと言うことができます)場合に、ソース位置とソース位置を指定します。Androidの編集テキストでテキストの入力が完了した後にメソッドを呼び出す方法

しかし、ここで私はGUJRAT UNIVERSITYを入力するとGUJRATとUNIVERSITYを異なるVALUEとして入力します。

et.addTextChangedListener(new TextWatcher() { 
         @Override 
         public void beforeTextChanged(CharSequence s, int start, int count, int after) { 

         } 

         @Override 
         public void onTextChanged(CharSequence s, int start, int before, int count) { 
          // findPlaceWaypoints(); 
         } 

         @Override 
         public void afterTextChanged(Editable s) { 
          findPlaceWaypoints(); 
         } 
        }); 

が、それはすなわち、マディヤ・プラドが、それはマディヤとプ​​ラドと マディヤ・プラドに関連するすべての可能な単語を検索するすべての単語を検索します。私はすべてのテキストに の1つの値を編集テキストで入力します。それはかもしれない、これはあなたに役立ちますしてみてください

private void findPlaceWaypoints() { 
     String location = et.getText().toString().toLowerCase(); 
     if (location == null || location.equals("")) { 
      // Toast.makeText(getBaseContext(), "No Place is entered", Toast.LENGTH_SHORT).show(); 
      return; 
     } 
     String url = "https://maps.googleapis.com/maps/api/geocode/json?"; 
     try { 
      // encoding special characters like space in the user input place 
      location = URLEncoder.encode(String.valueOf(location), "utf-8"); 
     } catch (UnsupportedEncodingException e) { 
      e.printStackTrace(); 
     } 
     String address = "address=" + location; 
     String sensor = "sensor=true"; 

     // url , from where the geocoding data is fetched 
     url = url + address + "&" + sensor; 

     // Instantiating DownloadTask to get places from Google Geocoding service 
     // in a non-ui thread 
     DownloadTask downloadTask = new DownloadTask(); 

     // Start downloading the geocoding places 
     downloadTask.execute(url); 
    } 
+0

質問を詳細に説明できますか? –

+0

検索に必要ですか? –

+0

GUJARAT UNIVERSITYのようなものと同じ編集文章で書いてください。 –

答えて

0

これは私のfindPlaceWaypoints方法である

edSearch.addTextChangedListener(new TextWatcher() { 
      @Override 
      public void beforeTextChanged(CharSequence s, int start, int count, int after) { 
      } 

      @Override 
      public void onTextChanged(CharSequence s, int start, int before, int count) { 
       String strname = edSearch.getText().toString().toLowerCase(); 

      } 

      @Override 
      public void afterTextChanged(Editable s) { 
      } 
     }); 
+1

まだ別の異なる値としてすべての言葉を取って、 –

0

が、私はそれがのEditTextとは何かを持っているとは思わないが、それが関係していますジオコーディングAPI。それが通常応答として送信するのは、以下のテンプレートのようなオブジェクト(Places)の配列です。

results[]: { 
types[]: string, 
formatted_address: string, 
address_components[]: { 
    short_name: string, 
    long_name: string, 
    postcode_localities[]: string, 
    types[]: string 
}, 
partial_match: boolean, 
place_id: string, 
postcode_localities[]: string, 
geometry: { 
    location: LatLng, 
    location_type: GeocoderLocationType 
    viewport: LatLngBounds, 
    bounds: LatLngBounds 
} 
} 

これらのオブジェクトは、クエリに一致するすべての場所です(すなわち。マディヤ・プラド、マディヤ、プラド)。

正確に一致するかどうかを確認できるのは、レスポンスオブジェクト内の "partial_match"という名前のフィールドです。 partial_matchがfalseの場合は完全一致、それ以外の場合は部分一致です。

これが役に立ちます。

関連する問題