此函数将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对象。现在请告诉我如何在ShowDetails函数中获取详细信息,这些函数通过函数parseLocationResult存储在哈希映射中。
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 :(得分:0)
更改您的
val rdd = sc.textFile("/home/training/mydata/sports.txt")
val text =rdd.map(lines=>lines.split(",")).map(arrays=>arrays(0),arrays(1),arrays(2),arrays(3),arrays(4)).toDF("first_name","sports","medal_type","year","country")
text.filter(text("medal_type")==="silver" && ("country")==="USA" groupBy("year").count().show
到
private Map<MarkerOptions, JSONObject> markersMap = new HashMap<MarkerOptions, JSONObject>();
然后将Marker存储在地图中,如下所示:
private Map<Marker, JSONObject> markersMap = new HashMap<Marker, JSONObject>();
稍后您可以像这样检索您的Json:
Marker marker = mMap.addMarker(markerOptions);
markersMap.put(marker,place);