建立一个覆盖我们需要做的步骤如下 :
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:产生点击事件的地图图层。
Photoshop中overlay这种模式以一种非艺术逻辑的方式把放置或应用到一个层上的颜色同背景色进行混合,然而,却能得到有趣的效果。背景图像中的纯黑色或纯白色区域无法在Overlay模式下显示层上的Overlay着色或图像区域。背景区域上落在黑色和白色之间的亮度值同0ver1ay 材料的颜色混合在一起,产生最终的合成颜色。为了使背景图像看上去好像是同设计或文本一起拍摄的,Overlay可用来在背景图像上画上一个设计或文本。欢迎分享,转载请注明来源:内存溢出
评论列表(0条)