谷歌地图显示Android的多个标记

时间:2015-11-04 03:29:33

标签: android json google-maps google-maps-api-3

我正在尝试开发一个Android应用程序,它显示代表我所在区域周围所有树木的标记。作为Android开发的新手,我不知道如何从Json中检索数据。我只能显示1棵树及其名称。我想要完成的是显示所有树木及其名称。任何帮助/建议都会非常感激.Below是Json的代表。

{"Tree_ID":"19",
"Tree_Name":"Freeman Maple",
"Latitudes":"41.60659790",
"Longitudes":"-88.07947396"},

{"Tree_ID":"20",
"Tree_Name":"Ginkgo ",
"Latitudes":"41.60653306",
"Longitudes":"-88.07937155"},

{"Tree_ID":"21",
"Tree_Name":"Golden Raintree",
"Latitudes":"41.60644056",
"Longitudes":"-88.07604981",},

{"Tree_ID":"22",
"Tree_Name":"Greenspire Linden",
"Latitudes":"41.60560806",
"Longitudes":"-88.08078320"},

1 个答案:

答案 0 :(得分:1)

您可以从JSON获取数据,如下所示。

    private class AsyncTaskGetData extends AsyncTask<String, String, JSONArray> {

            @Override
            protected void onPreExecute() {
                super.onPreExecute();
            }

            @Override
            protected JSONArray doInBackground(String... arg0) {
                JSONArray jsonArray = your webservices goes here....
            }

            @Override
            protected void onPostExecute(JSONArray result) {
                if (result != null) {
                    for (int i = 0; i < result.length(); i++) {
                        JSONObject dataObject = null;
                        try {
                            dataObject = result.getJSONObject(i);
                            String str1 = dataObject.getString("Tree_ID");
                            String treename= dataObject.getString("Tree_Name");
                            String latitude = dataObject.getString("Latitudes");
                            String longitude = dataObject.getString("Longitudes");

                            // Call this method for draw marker in google map

                            drawMarker(new LatLng(Double.parseDouble(latitude), Double.parseDouble(longitude)),treename);
                        } catch (JSONException e) {
                            // TODO Auto-generated catch block
                            e.printStackTrace();
                        }

                    }

                }
            }

        }

//并从onCreate()或onResume()或您想要的地方调用此AsyncTask,如下所示。

new AsyncTaskGetData().execute();

ArrayList中添加该数据并使用您想要的位置。

用于在地图中设置多个标记

// Google Map中的此方法绘图标记

private void drawMarker(LatLng point,String text){

    MarkerOptions markerOptions = new MarkerOptions();
    markerOptions.position(point).title(text).icon(BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_GREEN));
    googleMap.addMarker(markerOptions)
}