在百度地图上 我们可以自己定义覆盖物 然后添加到地图上
添加覆盖物的流程大体一致 不管是添加 弧线
- 添加覆盖物 :
先以一个Marker为例
2 .构建Marker图标
我们通过MarkerOptions描述了一个Marker标记
将一个覆盖物描述添加到地图上
- OverlayOptions的子类
OverlayOptions类是地图覆盖物选项基类
地图操作者通过添加一个地图覆盖物基类的描述 添加一个地图覆盖物基类
MarkerOptions是OverlayOptions的子类 用来描述一个Marker标记覆盖物 Marker 是 Overlay的子类
表示是一个地图覆盖物 OverlayOptions的子类还有:
PolylineOptions 用于描述一个折线覆盖物
ArcOptions
用于描述一个弧线覆盖物 CircleOptions
用于描述一个圆形覆盖物 DotOptions
用于描述一个点覆盖物 PolygonOptions
用于描述一个多边形覆盖物 TextOptions
用于描述一个文字覆盖物 GroundOverlayOptions 用于描述一个地形图图层覆盖物
*
GroundOverlayOptions又可叫做图片图层,即开发者可在地图的指定位置上添加图片。该图片可随地图的平移、缩放、旋转等操作做相应的变换。该图层是一种特殊的Overlay, 它位于底图和底图标注层之间(即该图层不会遮挡地图标注信息)。
- 不同覆盖物的描述
上面拿Marker做了例子 其实覆盖物大体的设置方式都一样
不同的是需要给出的点不同 需要的点的个数不同
可能是把点的封装成list使用也可能是使用LatLanBounds类去封装 如果需要显示图片
可以用 BitmapDescriptorFactory 对象去得到一个BitmapDescriptor作为显示图片 最后都要转化为OverlayOptions 对象
Baidumap对象才可以去设置描述
PolylineOptions : 定义线的开始结束和中间每一次转折的点
存放在list集合中使用point方法设置 OverlayOptions ooPolyline = new PolylineOptions().width(10)
.color(0xAAFF0000).points(list); ArcOptions
: 定义弧线的两个点和半弧的中间点坐标 OverlayOptions ooArc = new ArcOptions().color(0xAA00FF00).width(4)
.points(p1, p2, p3); CircleOptions
: 定义边框的颜色和宽度和填充颜色 圆心半径 OverlayOptions ooCircle = new CircleOptions().fillColor(0x000000FF)
.center(llCircle).stroke(new Stroke(5, 0xAA000000))
.radius(1400); DotOptions : 定义点的坐标 和 点的半径 颜色等
OverlayOptions ooDot = new DotOptions().center(llDot).radius(6)
.color(0xFF0000FF); PolygonOptions
: 需要定义多变型每一个点的坐标 (List集合的形式) OverlayOptions ooPolygon = new PolygonOptions().points(list)
.stroke(new Stroke(5, 0xAA00FF00)).fillColor(0xAAFFFF00);
mBaiduMap.addOverlay(ooPolygon); TextOptions
: 旋转 大小 颜色文字信息位置坐标 OverlayOptions ooText = new TextOptions().bgColor(0xAAFFFF00)
.fontSize(24).fontColor(0xFFFF00FF).text("百度地图SDK").rotate(-30)
.position(llText);
GroundOverlayOptions :地形图图层
定义地理范围(LatlngBounds对象) 定义显示的图片 透明度 addOverlay
成功后 会返回一个 Overlay对象 我们可以转换成对应的子类 然后设置点击监听 例如 :
Marker marker = mBaiduMap.addOverlay(option);
mBaiduMap.setOnMarkerClickListener (new OnMarkerClickListener(){
public boolean onMarkerClick(final Marker marker) {
//当点击了 marker 显示弹出的 OnInfoWindow
//OnInfoWindow是一个view对象 可以给view设置点击监听
//改变marker的状态等等
}
}