2016-05-17 1 views
-1

Я новичок в Android. В моем коде я хочу добавить 1000 маркеров на свою карту. Я знаю, как создать массив с Lat-long, и я знаю, как создавать маркеры.Добавить Lat и Long в ArrayList

я создаю свои маркеры, как это:

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

Моя проблема заключается в том, что путь я добавить LaLng в мой массив я получит много кода, если я добавлю 1000 LatLong. Пожалуйста, покажите лучший способ сделать это.

Благодаря

+2

Где вы храните свой лат? если это txt-файл, вы можете создать считыватель файлов и прочитать его по строкам и автоматически добавить маркер. – PSo

+0

Вы также можете использовать базу данных для хранения ваших широт/логарифмов – antonio

+0

Я пробовал его с базой данных, но маркеры не отображались – Eudes

ответ

1

Добавление на замечание @ ПСО, вы можете хранить все ваши Lat, LNG значения в файле JSON и скопировать этот файл в папку активов вашего приложения.

Итак, допустим, вы сохраните данные, как это в 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()); 
+0

таким образом, как я могу добавить заголовок для маркеров? – Eudes

+0

Вы можете добавить заголовок в файл JSON, если у вас есть это. Поэтому вместо использования массивов местоположения добавьте еще один объект с заголовком и массивом местоположений. В основном вы продолжаете добавлять пару ключей/значений в файл JSON, как вам угодно. – PsyGik

+0

Спасибо. я попробую – Eudes

Смежные вопросы