android百度地图图层绘制.docx_第1页
android百度地图图层绘制.docx_第2页
android百度地图图层绘制.docx_第3页
android百度地图图层绘制.docx_第4页
android百度地图图层绘制.docx_第5页
已阅读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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论