2016-11-16 5 views
0

JSONとPHPを使用してデータベースから複数のマーカーを取得しましたが、今はマーカーでタイトルを検索し、アンドロイドマップでTextWatcherを使用してタイトルの検索マーカーと他のマーカーを非表示にする方法

は、ここでは、マーカーのHashMapを作成する必要があり、Javaコード

public class MainActivity extends FragmentActivity { 

    private GoogleMap googleMap; 
    private List<Marker> markers = new ArrayList<>(); 

    // Search EditText 
    EditText inputSearch; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     SupportMapFragment fragment = (SupportMapFragment) getSupportFragmentManager() 
       .findFragmentById(R.id.map); 
     googleMap = fragment.getMap(); 
     // googleMap.setMyLocationEnabled(true); 
     new RetrieveTask().execute(); 

     inputSearch = (EditText) findViewById(R.id.editText); 

     inputSearch.addTextChangedListener(new TextWatcher() { 

      @Override 
      public void onTextChanged(CharSequence s, int start, int before, int count) { 
       // When user changed the Text 
       showMarker(s.toString()); 
      } 


      @Override 
      public void beforeTextChanged(CharSequence s, int start, int count, int after) { 
       // TODO Auto-generated method stub 

      } 

      @Override 
      public void afterTextChanged(Editable s) { 
       // TODO Auto-generated method stub  

      } 
     }); 
    } 

    private void showMarker(String s) { 

     for (Marker marker : markers) { 

      if (marker.getTitle().equalsIgnoreCase(name)) { 
       marker.setVisible(true); 
       marker.showInfoWindow(); 
      } else { 
       marker.setVisible(false); 
      } 
     } 
    } 




    private class RetrieveTask extends AsyncTask<Void, Void, String> { 
     @Override 
     protected String doInBackground(Void... params) { 
      String strUrl = "http://192.168.43.229/location_marker_mysql/retrieve.php"; 
      URL url = null; 
      StringBuffer sb = new StringBuffer(); 

      try { 
       url = new URL(strUrl); 
       HttpURLConnection connection = (HttpURLConnection) url.openConnection(); 
       connection.connect(); 
       InputStream iStream = connection.getInputStream(); 
       BufferedReader reader = new BufferedReader(new InputStreamReader(iStream)); 
       String line = ""; 
       while ((line = reader.readLine()) != null) { 
        sb.append(line); 
       } 

       reader.close(); 
       iStream.close(); 

      } catch (MalformedURLException e) { 
       e.printStackTrace(); 
      } catch (IOException e) { 
       e.printStackTrace(); 
      } 
      return sb.toString(); 
     } 

     @Override 
     protected void onPostExecute(String result) { 
      super.onPostExecute(result); 
      new ParserTask().execute(result); 

     } 
    } 

    MarkerOptions markerOptions = new MarkerOptions(); 
    String name; 
    LatLng latLng; 
    double lat; 
    double lng; 

    private class ParserTask extends AsyncTask<String, Void, List<HashMap<String, String>>> { 
     @Override 
     protected List<HashMap<String, String>> doInBackground(String... params) { 
      MarkerJSONParser markerParser = new MarkerJSONParser(); 
      JSONObject json = null; 
      try { 
       json = new JSONObject(params[0]); 
      } catch (JSONException e) { 
       e.printStackTrace(); 
      } 
      List<HashMap<String, String>> markersList = markerParser.parse(json); 
      return markersList; 
     } 

     @Override 
     protected void onPostExecute(List<HashMap<String, String>> result) { 
      for (int i = 0; i < result.size(); i++) { 
       HashMap<String, String> hmPlace = result.get(i); 
       lat = Double.parseDouble(hmPlace.get("lat")); 
       lng = Double.parseDouble(hmPlace.get("lng")); 
       name = hmPlace.get("name"); 
       String locality = hmPlace.get("locality"); 
       String city = hmPlace.get("city"); 
       latLng = new LatLng(lat, lng); 
       markerOptions.position(latLng); 
       markerOptions.title(name); 
       markerOptions.snippet(locality + "," + city); 
       markerOptions.icon(BitmapDescriptorFactory.fromResource(R.drawable.school_marker)); 
       markers.add(googleMap.addMarker(markerOptions)); 
       googleMap.moveCamera(CameraUpdateFactory.newLatLngZoom(new LatLng(24.66372, 93.90627), 8.0f)); 
      } 
     } 
    } 

答えて

0

です。

private HashMap<Marker, AnyObject> msHashMap; 

Marker mkr = mMap.addMarker(newMarkerOptions().position(latLng).title(anyobject.getPsName())); 
msHashMap.put(mkr, anyobject); 

ここでAnyObjectは、JSONから解析した後にデータを格納するオブジェクトの型です。

もう1つの入力 JSONの解析には、 とGSONのREST要求応答にVolleyまたはokHttpを使用します。

希望します。

関連する問題