Невозможно нарисовать текст на карте как наложение - PullRequest
0 голосов
/ 01 марта 2011

Я пытаюсь добавить текстовые метки рядом с моими наложенными изображениями. Пока что единственный способ сделать это - использовать метод draw и рисовать текст как наложение. Я сделал это, но почему-то он не показывает мне нарисованный текст. Мой код выглядит так:

 SitesOverlay that extends ItemizedOverlay<OverlayItem>
    public void draw(Canvas canvas, MapView mapView,boolean shadow) {  
    int i;  
    Paint paint=new Paint();  
    paint.setStrokeWidth(1);  
    paint.setARGB(255, 255, 255, 255);  
    paint.setStyle(Paint.Style.STROKE);  
    super.draw(canvas, mapView, shadow);  
    boundCenterBottom(station);  
    canvas.drawText("hullo",28632877,77219722, paint);  
    }  

Мой конструктор в классе SitesOverlay просто добавляет изображения ко многим различным GeoPoints. Теперь в моем OnCreate у меня есть этот кусок кода:

 map.getOverlays().add(new SitesOverlay(station));

Это добавление списка изображений в моем конструкторе - SitesOverlay (станция) в качестве оверлеев.
Мой вопрос заключается в том, что, поскольку я добавил свой текст в метод Draw класса SitesOverlay, а не в этот конструктор, по этой причине текст не отображается на карте? Если да, то как мне добавить текст на карту?

Элементы, нарисованные в методе draw(), автоматически добавляются как оверлей? Потому что я думаю, вот в чем причина проблемы ... Можно ли добавить текстовые метки рядом с моими наложенными изображениями?
Пожалуйста, помогите ...

1 Ответ

0 голосов
/ 01 марта 2011

попробуйте это ..

MyLocationOverlay myTouchOverlay = new MyLocationOverlay ();
List<Overlay> list1 = myMapView.getOverlays();
list1.add(myTouchOverlay);



class MyLocationOverlay extends com.google.android.maps.Overlay {


@Override
    public boolean onTap(GeoPoint p, MapView    mapView)  {
    }

    @Override
    public boolean draw(Canvas canvas, MapView mapView, boolean shadow,
            long when) {

        super.draw(canvas, mapView, shadow);

        Paint paint = new Paint();
        // Converts lat/lng-Point to OUR coordinates on the screen.
        Point myScreenCoords = new Point();

        mapView.getProjection().toPixels(point, myScreenCoords);
        paint.setStrokeWidth(1);
        paint.setARGB(255, 255, 255, 255);
        paint.setStyle(Paint.Style.STROKE);

        paint.setTextSize(20);
        paint.setColor(Color.RED);
        paint.setStrokeWidth(2);


         canvas.drawText("Here I am...", myScreenCoords.x-10,myScreenCoords.y-48, paint);
        return true;
    }
}
...