已阅读5页,还剩4页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
package com.jsptpd.baidumap;import java.util.ArrayList;import java.util.HashMap;import java.util.List;import android.util.Log;import android.view.View;import com.baidu.mapapi.map.BaiduMap;import com.baidu.mapapi.map.BitmapDescriptor;import com.baidu.mapapi.map.BitmapDescriptorFactory;import com.baidu.mapapi.map.InfoWindow;import com.baidu.mapapi.map.MapStatusUpdate;import com.baidu.mapapi.map.MapStatusUpdateFactory;import com.baidu.mapapi.map.MyLocationData;import com.baidu.mapapi.map.PolylineOptions;import com.baidu.mapapi.map.InfoWindow.OnInfoWindowClickListener;import com.baidu.mapapi.map.Marker;import com.baidu.mapapi.map.MarkerOptions;import com.baidu.mapapi.map.OverlayOptions;import com.baidu.mapapi.model.LatLng;import com.baidu.mapapi.model.LatLngBounds;import com.baidu.mapapi.model.LatLngBounds.Builder;import com.baidu.mapapi.overlayutil.OverlayManager;/* * 百度地图上图层的管理类。 * * author 马陈杰 * since 2014.8.22 * version 1.0 * */public class SimpleOverlayManager extends OverlayManagerprivate static final int MAX_LINE_POINTS=9999;/允许的最大单次画线点数 private BaiduMap mBaiduMap;/ 百度地图实例private List overlayList = new ArrayList();/ 所有图层列表LatLngBounds.Builder bound_builder = new Builder();/ 地理围栏private HashMap markerCBMap = new HashMap();/ 标记点击监听MAPpublic SimpleOverlayManager(BaiduMap mBaiduMap)super(mBaiduMap);this.mBaiduMap = mBaiduMap;this.mBaiduMap.setOnMarkerClickListener(this);/* * 标记点击事件监听 */Overridepublic boolean onMarkerClick(Marker marker)if (markerCBMap.containsKey(marker)(MarkerClickCallback) (markerCBMap.get(marker).doOnMarkerClick();return true;/* * 获取所有图层列表 */Overridepublic List getOverlayOptions()return overlayList;/* * 获取百度地图实例 * * return 百度地图实例 */public BaiduMap getBaiduMap()return mBaiduMap;/* * 在某个经纬度添加一个某种类型标记 * * param ll * 标记点百度经纬度 * param resId * 标记图片资源 * param type * 标记类型 * return 标记实例 */public Marker putIconOverlay(LatLng ll, int resId, MarkerType type)Marker marker = null;if (mBaiduMap != null)/ 将该标记加入地理围栏bound_builder.include(ll);BitmapDescriptor bd = BitmapDescriptorFactory.fromResource(resId);OverlayOptions oo = new MarkerOptions().position(ll).icon(bd).zIndex(9);overlayList.add(oo);/ 向地图上添加标记marker = (Marker) (mBaiduMap.addOverlay(oo);/ 对不同的标记加入不同的标记类型管理中switch (type)case EmergencyMarkerType:MarkerType.EmergencyMarkerType.addMarker(marker, mBaiduMap);break;case ConservationMarkerType:MarkerType.ConservationMarkerType.addMarker(marker, mBaiduMap);break;case SurveillanceMarkerType:MarkerType.SurveillanceMarkerType.addMarker(marker, mBaiduMap);break;case AccidentRepairMarkerType:MarkerType.AccidentRepairMarkerType.addMarker(marker, mBaiduMap);break;case CommonMarkerType:MarkerType.CommonMarkerType.addMarker(marker, mBaiduMap);break;default:break;return marker;/* * 向某个经纬度添加一个某种类型的标记,并注册点击回调 * * param ll * 标记点百度经纬度 * param resId * 标记图片资源 * param type * 标记类型 * param cb * 覆盖物点击回调 * return 标记实例 */public Marker putIconOverlay(LatLng ll, int resId, MarkerType type,MarkerClickCallback cb)Marker marker = putIconOverlay(ll, resId, type);regiestMarkerClickCallback(marker, cb);return marker;public Marker putIconOverlay(double latitude, double longitude, int resId,MarkerType type)LatLng ll = new LatLng(latitude, longitude);return putIconOverlay(ll, resId, type);public Marker putIconOverlay(double latitude, double longitude, int resId,MarkerType type, MarkerClickCallback cb)LatLng ll = new LatLng(latitude, longitude);return putIconOverlay(ll, resId, type, cb);/* * 给标记注册点击回调函数 * * param marker * 标记实例 * param cb * 标记点击回调 */public void regiestMarkerClickCallback(Marker marker, MarkerClickCallback cb)if (cb != null)markerCBMap.put(marker, cb);/* * 向百度地图某个经纬度添加一个信息窗口 * * param view * 信息窗口显示视图 * param ll * 信息窗口显示经纬度 * param listener * 信息窗口点击回调 */public void putInfoWindow(View view, LatLng ll,OnInfoWindowClickListener listener)InfoWindow infoWindow = new InfoWindow(view, ll, listener);mBaiduMap.showInfoWindow(infoWindow);/* * 隐藏所有信息窗口 */public void hideInfoWindow()mBaiduMap.hideInfoWindow();/* * 移除所有覆盖物 */public void removeAllOverlay()/ 移除覆盖物removeFromMap();/ 清空标记监听markerCBMap.clear();/ 清空覆盖物列表overlayList.clear();/ 清空各个标记类型中该地图的标记MarkerType.EmergencyMarkerType.clearAllMarkers(mBaiduMap);MarkerType.ConservationMarkerType.clearAllMarkers(mBaiduMap);MarkerType.SurveillanceMarkerType.clearAllMarkers(mBaiduMap);MarkerType.AccidentRepairMarkerType.clearAllMarkers(mBaiduMap);MarkerType.CommonMarkerType.clearAllMarkers(mBaiduMap);/ 初始化地理围栏bound_builder = new Builder();/* * 根据途径点绘制线路 * * param points * 途径点 * param drawInfo * 绘制线路的线条信息 */public void drawLineOverlay(List points, RouteLineDrawInfo drawInfo)try/ 移除null点points.remove(null);int index = 0;/ 由于每次只允许绘制9999个点,大于9999个点时需要进行切割绘制while (index points.size()List drawPoints = null;int end = index + MAX_LINE_POINTS;if (end points.size()drawPoints = points.subList(index, end);elsedrawPoints = points.subList(index, points.size();index = end;/绘制线路OverlayOptions ooPolyline = new PolylineOptions().width(drawInfo.getLineWidth().color(drawInfo.getLineColor().points(drawPoints);mBaiduMap.addOverlay(ooPolyline);overlayList.add(ooPolyline); catch (Exception e)Log.d(TEST, 画路径出现异常);/* * 添加定位图层(一层小蓝圈) * * param latitude * 定位图层位于的经度 * param longitude * 定位图层位于的纬度 */public void drawLocationOverlay(double latitude, double longitude)if (mBaiduMap != null)mBaiduMap.setMyLocationEnabled(true);MyLocationData.Builder builder = new MyLocationData.Builder();builder.latitude(latitude);builder.longitude(longitude);mBaiduMap.setMyLocationData(builder.build();/* * 让所有标记在视野范围内 */public void zoomToSpan()if (mBaiduMap != null)LatLngBounds bounds = bound_builder.build();MapStatusUpdate u = MapStatusUpdateFactory.newLatLngBounds(bounds);mBaiduMap.animateMapStatus(u);/* * 线路绘图参数 * * author mcj * */public static class RouteLineDrawInfop
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026湖南黄金洞矿业有限责任公司法律专业岗位招聘考试备考试题及答案详解
- 心理健康阳光生活,小学主题班会课件
- 2026年乌鲁木齐市沙依巴克区事业单位人员招聘考试模拟试题及答案详解
- 2026年南京市鼓楼区事业单位人员招聘考试备考题库及答案详解
- 2026-2027学年九江市重点中学数学八年级第一学期期末达标检测试题含解析
- 儿科皮肤损伤的护理科研进展
- 石油化工设备维护保养预案
- 垂体瘤患者的心理护理策略
- 2026南昌通源实业有限公司工作人员招聘1人考试模拟试题及答案详解
- 2026年乐山市市中区事业单位人员招聘考试参考题库及答案详解
- 甘肃省平凉市2024-2025学年七年级下学期期末考试数学试卷(含详解)
- 安徽省池州市贵池区2024-2025学年七年级下学期期末语文试题(解析版)
- 养老护理员应急救护课件
- (高清版)DB11∕T 2407-2025 供暖系统入户巡检规程
- 正泰户用光伏租赁合同5篇
- T/QX 006-2023工业设备水射流清洗质量验收规范
- 农机安全事故典型案例分析
- 2025年人教版小学五年级下册奥林匹克数学竞赛试卷(附参考答案)
- 食品安全管理制度文本下载
- 厂房消防工程改造施工方案
- 加强电力物资管理提高企业经济效益-图文
评论
0/150
提交评论