如何在地图上显示多个标记

时间:2017-10-17 10:37:43

标签: android json jsonexception

有人能解释如何使用以下 JSON 代码在Android中的谷歌地图上显示多个标记?

[
 {"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"}
]

所有错误都已解决仍然标记未在地图上显示

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))
    );
}
}

2 个答案:

答案 0 :(得分:1)

请像这样更改您的代码。

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()

    }

答案 1 :(得分:1)

json字符串中不存在population键

 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")
                    ))
            );
        }
    }