将Lat和Long添加到ArrayList

时间:2016-05-17 10:26:22

标签: java android google-maps

我是Android新手。在我的代码中,我想在我的地图上添加1000个标记。我知道如何用Lat-long创建数组,我知道如何创建标记。

我创建了这样的标记:

protected void createMarker(Double latitude, Double longitude) {

        LatLng latLong = new LatLng(latitude, longitude);

        map.addMarker(new MarkerOptions()
                .position(latLong)
               // .title(title)
                .icon(BitmapDescriptorFactory.fromResource(R.drawable.ic_map_marker)));

    }

并将LatLog添加到我的arrayList中,如下所示:

locations.add(new LatLng(-08.8123083,13.2249500));
locations.add(new LatLng(-08.8265861,13.2274667));
locations.add(new LatLng(-08.8328611,13.2182861));

我的问题是,如果我添加1000 LatLong,我将LaLng添加到我的数组中的方式将获得大量代码。 请展示更好的方法。

谢谢

1 个答案:

答案 0 :(得分:1)

添加@Pso的评论,您可以将所有Lat,Lng值存储在JSON文件中,并将该文件复制到应用的assets文件夹中。

因此,假设您在assets/locations.json文件中保存了这样的数据,

    {
    "data": [
    [-08.8123083,13.2249500],
    [-08.8265861,13.2274667],
    [-08.8328611,13.2182861],
    ....]
   }

然后将其读作,

public String getJSONFromAssets() {
        String json = null;
        try {
            InputStream inputData = getAssets().open("locations.json");
            int size = inputData.available();
            byte[] buffer = new byte[size];
            inputData.read(buffer);
            inputData.close();
            json = new String(buffer, "UTF-8");
        } catch (IOException ex) {
            ex.printStackTrace();
            return null;
        }
        return json;

    }

在代码中的任何位置使用JSON数据,例如

    JSONObject obj = new JSONObject(getJSONFromAssets());
    JSONArray arr = obj.getJSONArray("data");
    if (arr != null)  
       for (int i=0;i<arr.length();i++)
           locations.add(arr.get(i).toString());