2024年4月16日发(作者:)

覆盖是用来向MapView中添加注释和单击处理的方法。每一个覆盖都可以直接在画

布上绘制2D原语,包括文本、直线、图片和各种形状,之后它们会被用来覆盖到Map View

之上。

可以向一个地图中添加多个覆盖。分配给一个Map View的所有覆盖都是作为层而

添加的,较新的层可能会模糊较旧的层。用户单击是通过栈进行传递的,直到它们被覆盖

处理,或者作为Map View本身的单击进行注册为止。

1. 创建新的覆盖

每一个覆盖都是一块具有透明背景的画布,可以把它作为一个图层放在Map View

的上面,并用它来处理地图触摸事件。

要添加新的覆盖,需要通过扩展Overlay来创建一个新的类。然后重写draw方法

来绘制希望添加的注释,并重写onTap方法来对用户的单击做出反应(通常是当用户单击

由这个覆盖所添加的注释时)。

下面的代码段显示了创建新的覆盖的框架,它可以用来绘制注释和处理用户单击:

Java代码:

1. import ;

2. import w;

3. import y;

4. public class MyOverlay extends Overlay {

5. @Override

6. public void draw(Canvas canvas, MapView mapView, boolean shadow) {

7. if (shadow == false)

8. { [ ... Draw annotations on main map layer ... ] }

9. else { [ ... Draw annotations on the shadow layer ... ] }

10. }

11. @Override

12. public boolean onTap(GeoPoint point, MapView mapView) {

13. // 如果这个覆盖处理了屏幕接触,就返回true return false;

14. }

15. }

复制代码