2017-08-26 19 views
0

該函數將json數據存儲在hashmap中。希望通過點擊存儲在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(Marker marker)函數中的「mHashMap」出現錯誤。 –

+0

這是我的名字錯誤,將名稱更改爲您的hashMap名稱(markersMap) – MHP

+0

現在我應該在哪裏使用markerMap,它是onMarkerClick中的jsonobject,因爲它仍未使用。 –

相關問題