无法将文本作为叠加层绘制到地图上

时间:2011-03-01 11:55:55

标签: android google-maps overlay

我正在尝试在叠加图片旁边添加文字标签。到目前为止,我能看到的唯一方法是使用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(station)作为叠加层 我的问题是,由于我在SitesOverlay类的Draw方法中添加了我的文本,而不是在这个构造函数中,这就是为什么文本没有在地图上绘制的原因?如果是这样,我如何将文本添加到地图?

draw()方法中绘制的内容会自动添加为叠加层吗?因为我认为这就是造成这个问题的原因...... 我还可以在叠加图像旁边添加文字标签吗? Plz帮助...

1 个答案:

答案 0 :(得分:0)

试试这个..

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