Динамические маркеры на карте? - PullRequest
1 голос
/ 26 июля 2010

Как бы динамически рисовать маркеры на MapView? У меня есть следующий код, который жестко закодирует одну точку. Я ищу, чтобы извлечь значения из базы данных ..

                 //---translate the GeoPoint to screen pixels---
        Point screenPts = new Point();
        mapView.getProjection().toPixels(p, screenPts);

        //---add the marker---
        Bitmap bmp = BitmapFactory.decodeResource(
            getResources(), R.drawable.pushpin);            
        canvas.drawBitmap(bmp, screenPts.x, screenPts.y-50, null); 

У меня есть все места в базе данных. Как бы мне не объявить переменную Point и т. Д. Для каждой точки, существующей в таблице базы данных размера N?

Спасибо.

1 Ответ

4 голосов
/ 26 июля 2010

Напишите OverlayCalss, который реализует ItemizedOverlay. Это лучший метод для реализации нескольких маркеров. Вы можете добавить amrkers, выбранные из базы данных как:

db = SQLiteDatabase.openDatabase (

            "/data/data/<your project package>/databases/<databasename>", null, 0);

    cursor = db.query(<db table name>, new String[] { <values to fetch> },

            null, null, null, null, null);

    cursor.moveToFirst();

     //Log.i("Log", "Displaying markers through iteration");

    while (cursor.isAfterLast() == false) {

        lat = Double.parseDouble(cursor.getString(2));

        lng = Double.parseDouble(cursor.getString(3));

   //       Log.i("Points", lat + "     " + lng);

        point = new GeoPoint((int) (lat * 1E6), (int) (lng * 1E6));

        overlayitem = new OverlayItem(point, "", "");

        overlays.addOverlay(overlayitem);

        mapOverlays.add(overlays);

        cursor.moveToNext();

    }

    db.close();

Где overlays - это экземпляр OverlayCAlss, который расширяет ItemizedOverlay, а mapOverlays - список элементов Overlay. Просто включил файлы журнала для целей отладки ... Декларируйте переменные, используемые в вашем файле ...

Надеюсь, это поможет ...:)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...