2017-08-26 4 views
0

この関数は、jsonデータをハッシュマップに保存します。HashMapに格納されているマーカーをクリックして場所の詳細を取得したい

private Map<MarkerOptions, JSONObject> markersMap = new HashMap<MarkerOptions, JSONObject>(); 



private void parseLocationResult(final JSONObject result) { 

    String id, place_id = null, placeName = null, reference, icon, vicinity = null,location; 
    JSONArray rev; 
    double latitude; 
    double longitude; 

    try { 
     final JSONArray jsonArray = result.getJSONArray(RESULTS);//JavaScript Object Notation 

     if (result.getString(STATUS).equalsIgnoreCase(OK)) { 

      mMap.clear(); 

      for (int i = 0; i < jsonArray.length(); i++) { 
       final JSONObject place = jsonArray.getJSONObject(i); 

       id = place.getString(SUPERMARKET_ID); 
       place_id = place.getString(PLACE_ID); 
       if (!place.isNull(NAME)) { 
        placeName = place.getString(NAME); 
       } 
       if (!place.isNull(VICINITY)) { 
        vicinity = place.getString(VICINITY); 
       } 
       latitude = place.getJSONObject(GEOMETRY).getJSONObject(LOCATION) 
         .getDouble(LATITUDE); 
       longitude = place.getJSONObject(GEOMETRY).getJSONObject(LOCATION) 
         .getDouble(LONGITUDE); 
       reference = place.getString(REFERENCE); 
       icon = place.getString(ICON); 


       MarkerOptions markerOptions = new MarkerOptions(); 
       final LatLng latLng = new LatLng(latitude, longitude); 
       markerOptions 
         .icon(BitmapDescriptorFactory.fromResource(R.drawable.bluemarker)) 
         .position(latLng); 
       markerOptions.title(placeName + " : " + vicinity); 


       mMap.addMarker(markerOptions); 
       markersMap.put(markerOptions,place); 


      } 

      Toast.makeText(getBaseContext(), jsonArray.length() + " found!", 
        Toast.LENGTH_LONG).show(); 

     } else if (result.getString(STATUS).equalsIgnoreCase(ZERO_RESULTS)) { 
      Toast.makeText(getBaseContext(), "Not found in 5KM radius!!!", 
        Toast.LENGTH_LONG).show(); 
     } 

    } catch (JSONException e) { 

     e.printStackTrace(); 
     Log.e(TAG, "parseLocationResult: Error=" + e.getMessage()); 
    } 


} 

ここで、この関数では、hashMapに格納されている詳細を取得したいと考えています。後で私は前の関数(parseLocationResult)でこの関数(ShowDetails)を呼び出します。 私はjsonオブジェクトを宣言しました。さて、親切に言って、関数parseLocationResultを使ってハッシュマップに格納されているShowDetails関数の詳細を取得する方法を教えてください。

public void showdetails(final Place place) 


{ 
    final JSONObject jsonObject=markersMap.get(markersMap); 



    mMap.setOnMarkerClickListener(new GoogleMap.OnMarkerClickListener() { 
     @Override 
     public boolean onMarkerClick(Marker marker) { 

      SharedPreferences settings = getSharedPreferences(PREFS_NAME, MODE_PRIVATE); 
      SharedPreferences.Editor editor = settings.edit(); 


      editor.putString("_PlaceID", place.getId()); 
      editor.putString("_name", (String) place.getName()); 
      editor.putString("_address", (String) place.getAddress()); 
      editor.putString("_webUri", String.valueOf(place.getWebsiteUri())); 
      editor.putString("_PhoneNo", (String) place.getPhoneNumber()); 
      editor.putString("_Lat", String.valueOf(place.getLatLng().latitude)); 
      editor.putString("_Lng", String.valueOf(place.getLatLng().longitude)); 

      editor.putString("_rating",String.valueOf(place.getRating())); 
      editor.apply(); 











      Intent i=new Intent(MapsActivity.this,infoWindow.class); 
      startActivity(i); 

      return false; 
     } 
    }); 

} 

答えて

0

変更し、あなたのその後

private Map<MarkerOptions, JSONObject> markersMap = new HashMap<MarkerOptions, JSONObject>(); 

private Map<Marker, JSONObject> markersMap = new HashMap<Marker, JSONObject>(); 

と、このようなあなたのマップにマーカーを保存:

Marker marker = mMap.addMarker(markerOptions); 
markersMap.put(marker,place); 

は後で、このようなあなたのJSONを取得することができます。

mMap.setOnMarkerClickListener(new GoogleMap.OnMarkerClickListener() { 
    @Override 
    public boolean onMarkerClick(Marker marker) { 

     JsonObject markersMap = markersMap.get(marker); 

     return false; 
    } 
}); 
+0

OnMarkerClick(マーカーマーカー)機能の「mHashMap」にエラーが表示されます。 –

+0

名前が間違っていました。あなたのhashMap名(markersMap)の名前を – MHP

+0

に変更しました。まだ使用されていないので、onMarkerClickのjsonobjectであるmarkerMapをどこで使うべきですか? –

関連する問題