Overlay

萧繁
2023-12-01

转载地址;http://hi.baidu.com/wendaoeryu/item/132663e40f65c1a52f140bd1

Android 之 Overlay

一.Overlay简述

Overlay,即覆盖,就将他理解成一块透明的画布,将它铺在地图上,可以进行的操作主要有两项:绘制(标记)和处理触摸事件。

建立一个覆盖我们需要做的步骤如下 :

1.创建一个继承自Overlay的新类,这个类我们需要复写draw方法和onTap方法。(即新建一张画布)

代码示例:

public class MyOverlay extends Overlay{

@Override
public void draw(Canvas canvas, MapView mapView, boolean shadow) {
// TODO Auto-generated method stub
super.draw(canvas, mapView, shadow);
}

@Override
public boolean onTap(GeoPoint p, MapView mapView) {
// TODO Auto-generated method stub
return super.onTap(p, mapView);
}
}

这里简要说明一下,draw方法在使用时,需要使用传进来的geopoint,即实际的经纬度位置,将它转换成投影(Projection)。之后根据这个投影位置在进行绘制。

2.在MapView上添加(删除)新覆盖。(即把生成的画布贴在地图上)

(1)添加

private void display(){
List<Overlay> overlays=mv.getOverlays();
MyOverlay myoverlay=new MyOverlay();
overlays.add(myoverlay);
}

首先,获取Overlays列表,接着新建MyOverlay 实例对象,最后将该对象添加到列表中。这样,在onCreate()中调用display()函数,就将会显示MyOverlay覆盖中所绘制的内容,同时也会对点击动作做出相应的回应。

(2)删除

删除所有覆盖:

overlays.clear();

删除指定覆盖:

overlays.remove(int i);//删除第i个覆盖,i的取值是0到overlays.size()-1。

3.详解draw方法和onTap方法

(1) draw(Canvas canvas, MapView mapView, boolean shadow){...}

canvas:就是所要绘制其上的画布。这里要啰嗦一下Canvas 类。Canvas类就是表示一块画布,你可以在上面画你想画的东西。它提供一些方法,使得我们可以绘制各种形状,颜色的图形。具体的使用方法我会在今后介绍。

mapView:所需标记的地图图层。这个参数的一个重要作用就是MapView.getProjection()这个方法,它完成从物理经纬度到屏幕投影坐标的转换,继而在相应坐标点上进行绘制。

shadow:当该值为true,则需绘制阴影图层,若为false,则只需绘制本来的内容即可。

(2)onTap(GeoPoint p, MapView mapView){}

该方法响应点击事件

p:被点击的点。

mapView:产生点击事件的地图图层。

 类似资料: