Значок маркера не отображается, но на него можно нажать - PullRequest
0 голосов
/ 25 августа 2010

У меня есть следующий код, который получает информацию из базы данных и наносит ее на карту. Информация доступна и доступна для нажатия, но фактический значок androidmarker не виден. Зачем? Как мне это исправить?

public void onCreate(Bundle savedInstanceState)
{
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    tweets = new LocationData(this);

    mapView = (MapView) findViewById(R.id.mapView);
    mapView.setSatellite(true);
    mc = mapView.getController();

    mc.setZoom(17);
    mapView.setBuiltInZoomControls(true);


    // Add the MyPositionOverlay
    positionOverlay = new MyPositionOverlay();
    List<Overlay> overlays = mapView.getOverlays();
    overlays.add(positionOverlay);

    //Add the Mapitems Overlay.

    mapOverlays = mapView.getOverlays();
    Drawable drawable = this.getResources().getDrawable(R.drawable.androidmarker);
    itemizedoverlay = new Mapitems(drawable, this);

    mylocation();
    distance(lat,lng);
    addmark();
    mapView.invalidate();
}

public void addmark(){

    SQLiteDatabase db = tweets.getWritableDatabase();
    String count = "SELECT * FROM tweets;";
    Cursor mcursor = db.rawQuery(count, null);
    startManagingCursor(mcursor);
    mcursor.moveToFirst();  
    if(mcursor != null && mcursor.moveToFirst())
    {
            do
            {
                System.out.println("WHAT");
            String tname = mcursor.getString(4);
            String tmessage = mcursor.getString(7);
            Double tlat = mcursor.getDouble(1);
            System.out.println("lat" + tlat);
            Double tlng = mcursor.getDouble(2);
            System.out.println("lng" + tlng);

            GeoPoint point = new GeoPoint(
                    (int) (tlat*1E6),
                    (int) (tlng*1E6));
            OverlayItem overlayitem = new OverlayItem(point, tname, tmessage);
            itemizedoverlay.addOverlay(overlayitem);
            mapOverlays.add(itemizedoverlay);


            }while(mcursor.moveToNext());

    }
}

1 Ответ

0 голосов
/ 25 августа 2010

Я предполагаю, что Mapitems - это класс, который реализует ItemizedOverlay.Возможно, проблема в этом. Вы можете следовать инструкциям здесь о том, как правильно создать этот класс.Я сам следовал этому уроку, и он отлично сработал.Важная часть - убедиться, что вы набрали populate() после добавления наложения в addOverlay(OverlayItem overlay)

Кроме того, почему у вас есть mapOverlays и overlays?Разве они не одинаковы?

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