Автоматическое добавление нескольких географических точек и маркеров в Карты Google - PullRequest
1 голос
/ 19 августа 2011

Можно ли сделать добавление геопункта на карту более "автоматическим"? Я имею в виду, что если у нас есть много точек для добавления на карту (более 100), нам не нужно добавлять их один за другим, например:

GeoPoint point2 = new GeoPoint(microdegrees(36.86774),microdegrees(10.305302));
GeoPoint point3 = new GeoPoint(microdegrees(36.87154),microdegrees(10.341815));
GeoPoint point4 = new GeoPoint(microdegrees(36.876093),microdegrees(10.325716));  

pinOverlay.addPoint(point2);
pinOverlay.addPoint(point3);
pinOverlay.addPoint(point4);

Есть ли способ складывать их все в таблицу, а затем компилятор добавляет их по одному?

Ответы [ 2 ]

10 голосов
/ 19 августа 2011

Вы захотите сохранить их либо в базе данных SQLite, либо в какой-либо другой форме хранения данных, а затем вы можете вытащить их и поместить их на карту с помощью ItemizedOverlay, см. Представление Google Map (учебник).

Создание массива из курсора базы данных

Cursor cursor =  mDbHelper.getItems();
cursor.moveToFirst();

List<CatchItem> catchList = new ArrayList<CatchItem>();

if (cursor != null && cursor.getCount() > 0) {
    for (int i = 0; i < cursor.getCount(); i++) {
        CatchItem item = new CatchItem();

        item.Latitude = cursor.getDouble(cursor.getColumnIndex("latitude"));
        item.Longitude = cursor.getDouble(cursor.getColumnIndex("longitude"));

        catchList.add(item);
        cursor.moveToNext();
    }
}

ItemizedOverlay

List<Overlay> overlays = mMaps.getOverlays();
overlays.clear();
CatchesItemizedOverlay catchOverlays = new CatchesItemizedOverlay(getResources().getDrawable(R.drawable.map_markeroverlay_blue72), this);

for (int i = 0; i < catchList.size(); i++) {
    double lat = catchList.get(i).Latitude;
    double lng = catchList.get(i).Longitude;

    GeoPoint geopoint = new GeoPoint((int)(lat*1E6), (int)(lng*1E6));
    catchOverlays.addOverlay(new CatchOverlayItem(this, geopoint, catchList.get(i)));
}

overlays.add(catchOverlays);

CatchesItemizedOverlay - это мой расширенный ItemizedOverlay (мне нужна была пользовательская функциональность).Объект catchList - это просто пользовательский объект, имеющий широту и долготу.

Надеюсь, это сработает для вас.

2 голосов
/ 19 августа 2011

Вы можете хранить их в базе данных SQLite и извлекать их по мере необходимости

...