百度地图开发( 基于新版本V2_1_1)— 覆盖物(4)_自定义图层:ItemizedOverlay
2013-05-27 10:05
281 查看
从2.0.0版本开始,SDK不支持直接继承Overlay , 用户可通过继承ItemizedOverlay来添加覆盖物。
添加覆盖物的一般流程如下:
1. 创建OverlayItem,准备overlay数据;
2. 创建ItemizedOverlay实例,调用 addItem(OverlayItem)} 接口添加overlay。
3. 调用MapView.getOverlays().add()方法添加overlay到mapview中。
4. 调用MapView.refresh() 使Overlay生效
下面我们就一起来挨个步骤来实现。
首先,先创建OverlayTest,继承ItemizedOverlay。相关事件在该方法中处理。核心代码如下:
接下来,就是开始自定义图层的实现了。
1、创建OverlayItem,准备overlay数据,此处添加三个自定义图层。具体核心代码如下:
2、创建ItemizedOverlay实例,调用 addItem(OverlayItem)} 接口添加overlay。代码如下:
3、调用MapView.getOverlays().add()方法添加overlay到mapview中。
4. 调用MapView.refresh() 使Overlay生效
添加覆盖物的一般流程如下:
1. 创建OverlayItem,准备overlay数据;
2. 创建ItemizedOverlay实例,调用 addItem(OverlayItem)} 接口添加overlay。
3. 调用MapView.getOverlays().add()方法添加overlay到mapview中。
4. 调用MapView.refresh() 使Overlay生效
下面我们就一起来挨个步骤来实现。
首先,先创建OverlayTest,继承ItemizedOverlay。相关事件在该方法中处理。核心代码如下:
class OverlayTest extends ItemizedOverlay<OverlayItem>{ public OverlayTest(Drawable marker, MapView mapView) { super(marker, mapView); } /** * 再次处理Mapview的点击事件,当返回true */ public boolean onTap(GeoPoint arg0, MapView arg1) { super.onTap(arg0, arg1); return false; } /** * 在此处理item点击事件 */ protected boolean onTap(int index) { System.out.println("item onTap: "+index); return true; } }
接下来,就是开始自定义图层的实现了。
1、创建OverlayItem,准备overlay数据,此处添加三个自定义图层。具体核心代码如下:
// 1 创建OverlayItem,准备overlay数据; //准备要添加的Overlay double mLat1 = 39.90923; double mLon1 = 116.397428; double mLat2 = 39.9022; double mLon2 = 116.3922; double mLat3 = 39.917723; double mLon3 = 116.3722; // 用给定的经纬度构造GeoPoint,单位是微度 (度 * 1E6) GeoPoint p1 = new GeoPoint((int) (mLat1 * 1E6), (int) (mLon1 * 1E6)); GeoPoint p2 = new GeoPoint((int) (mLat2 * 1E6), (int) (mLon2 * 1E6)); GeoPoint p3 = new GeoPoint((int) (mLat3 * 1E6), (int) (mLon3 * 1E6)); //准备overlay图像数据,根据实情情况修复 Drawable mark= getResources().getDrawable(R.drawable.ic_launcher); //用OverlayItem准备Overlay数据 OverlayItem item1 = new OverlayItem(p1,"item1","item1"); //使用setMarker()方法设置overlay图片,如果不设置则使用构建ItemizedOverlay时的默认设置 OverlayItem item2 = new OverlayItem(p2,"item2","item2"); item2.setMarker(mark); OverlayItem item3 = new OverlayItem(p3,"item3","item3");
2、创建ItemizedOverlay实例,调用 addItem(OverlayItem)} 接口添加overlay。代码如下:
// 2. 创建ItemizedOverlay实例,调用 addItem(OverlayItem)} 接口添加overlay。 //创建IteminizedOverlay OverlayTest itemOverlay = new OverlayTest(mark, mapView); // 此处方法为自己创建的类,继承自ItemizedOverlay<OverlayItem> //将IteminizedOverlay添加到MapView中 //注意:目前IteminizedOverlay不支持多实例,MapView中只能有一个IteminizedOverlay实例
3、调用MapView.getOverlays().add()方法添加overlay到mapview中。
// 3. 调用MapView.getOverlays().add()方法添加overlay到mapview中。 mapView.getOverlays().clear(); mapView.getOverlays().add(itemOverlay); //现在所有准备工作已准备好,使用以下方法管理overlay. //添加overlay, 当批量添加Overlay时使用addItem(List<OverlayItem>)效率更高 itemOverlay.addItem(item1); itemOverlay.addItem(item2); itemOverlay.addItem(item3);
4. 调用MapView.refresh() 使Overlay生效
//4. 调用MapView.refresh() 使Overlay生效 mapView.refresh();运行后的效果如下图:
相关文章推荐
- 百度地图开发( 基于新版本V2_1_1)— 覆盖物(1)_我的位置图层(MyLocationOverlay)
- 百度地图开发( 基于新版本V2_1_1)— 覆盖物(3)_路线图层(RouteOverlay)
- 百度地图开发( 基于新版本V2_1_1)— 覆盖物(2)_Poi搜索结果图层(PoiOverlay)
- 百度地图开发( 基于新版本V2_1_1)— 覆盖物(5)—弹出窗口图层:PopupOverlay
- Android学习笔记之百度地图(分条目覆盖物:ItemizedOverlay)
- JS版]基于百度地图的 Overlay 扩展,仿Q房网实现自定义覆盖物
- 基于AGS JS开发自定义贴图图层
- 百度地图开发( 基于新版本V2_1_1)—显示百度地图
- 百度地图开发自定义覆盖物事件及样式定制
- 基于AGS JS开发自定义贴图图层
- android实现百度地图点击覆盖物(MyLocationOverlay)弹出自定义弹出窗口
- 自定义图层ItemizedOverlay
- Android学习笔记之百度地图(分条目覆盖物:ItemizedOverlay)
- android百度地图开发--自定义最短路径搜索图层
- 百度地图开发入门【不同图层及覆盖物】
- 百度地图开发之不同图层及覆盖物
- android百度地图开发--自定义最短路径搜索图层
- 本篇文章主要介绍如何在百度地图上添加Overlay(即图层或覆盖物)。
- 百度地图之自定义覆盖物(Overlay)
- Android百度公交开发(二)———百度地图API之ItemizedOverlay的使用