How to show the multiple markers on maps

爷,独闯天下 提交于 2019-12-12 04:36:32

问题


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

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!