问题
Can anyone explain how to show multiple markers on google maps in android using the following JSON code?
[
{"id":"1","lat":"18.105917","lng":"78.838325","location":" Laxmi Filling Station( Medak Road)","distance":"0"},
{"id":"3","lat":"18.105952","lng":"78.840366","location":"Fathima Filling Station (Medak Road)","distance":"0.1340667689594937"},
{"id":"13","lat":"18.093713","lng":"78.843775","location":"Thirumala Thirupathi Filling Station (Ensanpally Road)","distance":"0.9160924683870764"},
{"id":"12","lat":"18.101497","lng":"78.852353","location":"MS Balaji Filling Station ( Old Busstand)","distance":"0.9706182480093937"}
]
All the errors are solved still marker's is not showing on map
private void createMarkersFromJson(String json) throws JSONException {
// De-serialize the JSON string into an array of city objects
JSONArray jsonArray = new JSONArray(json);
for (int i = 0; i < jsonArray.length(); i++) {
// Create a marker for each city in the JSON data.
JSONObject jsonObj = jsonArray.getJSONObject(i);
String location=jsonObj.getString("location");
double lat=jsonObj.getDouble("lat");
double lng=jsonObj.getDouble("lng");
String id=jsonObj.getString("id");
Log.e("detailes", lat+" "+lng+" "+location);
map.addMarker(new MarkerOptions()
.title(location)
.snippet(id)
.position(new LatLng(lat, lng))
);
}
}
回答1:
population key is not present in the json string
private void createMarkersFromJson(String json) throws JSONException {
// De-serialize the JSON string into an array of city objects
JSONArray jsonArray = new JSONArray(json);
for (int i = 0; i < jsonArray.length(); i++) {
// Create a marker for each city in the JSON data.
JSONObject jsonObj = jsonArray.getJSONObject(i);
map.addMarker(new MarkerOptions()
.title(jsonObj.getString("name"))
.snippet(jsonObj.getString("location"))
.position(new LatLng(
jsonObj.getDouble("lat"),
jsonObj.getDouble("lng")
))
);
}
}
回答2:
- Why you calling
jsonObj.getInt("population")
? It's not present in your API . - You suffering from Type mismatches on lookups.
Please change your code like this way .
for(int i=0;i<jsonArray.length();i++)
{
JSONObject jsonObject=jsonArray.getJSONObject(i);
String _id =jsonObject.getString("id");
String _lat =jsonObject.getString("lat");
String _lng =jsonObject.getString("lng");
map.addMarker(new MarkerOptions()
.title(jsonObject.getString("name"))
.snippet(Integer.toString(jsonObject.getString("distance")))
.position(new LatLng(_lat,_lng )); // If problem then convert String to double. Use getDouble() instead of getString()
}
来源:https://stackoverflow.com/questions/46788123/how-to-show-the-multiple-markers-on-maps