对地图开发的理解
基本上对使用第三方API的理解
写这个其实很像是把别人官方的开发指南抄袭一遍....不过后来想想,写关于ANDROID的应用,不也是抄袭官网的基本过程么....
1.申请相关的密钥,添加相关的权限
2.在需要应用地图界面的View,Activity,Fragment中添加MapView
3.在代码中初始化Map,并根据API得到MapController,用来得到地图的Overlays,animateTo,center,Zoom等
4.然后根据需求,一步步添加所需要的地图组件:
zoom:地图级别缩放按钮,通常mapView中双指也有缩放,不过添加zoomButton后更直观
比例尺:显示当前绽放级别的比例尺
center:设置地图初始化的中心位置
location:定位,有些API将定位集成在地图中,有些分离了,分离的需要在定位中设置相应的回调,当得到定位时使地图animateTo位置
overlays:地图的图层概念,默认添加的mapView显示地图只是一个底图,而在地图上显示的其他可操作的同类事物则会归为一种图层,图层相当于group概念,一类事物的集合,组合模式的应用
例如:
-
我的位置图层(MyLocationOverlay):用于显示用户当前位置的图层(支持自定义位置图标);
-
Poi搜索结果图层(PoiOverlay):用于显示兴趣点搜索结果的图层;
-
路线图层(RouteOverlay):公交、步行和驾车线路图层,将公交、步行和驾车出行方案的路线及关键点显示在地图上(起、终点图标用户可自定义);
-
公交换乘图层(TransitOverlay):公交换乘线路图层,将某一特定地区的公交出行方案的路线及换乘位置显示在地图上(起、终点图标用户可自定义);
-
自定义图层(ItemizedOverlay):可将一个或多个兴趣点绘制到地图上,且支持自定义图标(支持动态更新Item位置、图标);
-
弹出窗图层(PopupOverlay):在地图上显示一个弹出窗口;
-
几何图形绘制图层(GraphicsOverlay):用于绘制点、折线段、弧线、圆、矩形、多边形等几何图形的图层;
-
文字绘制图层(TextOverlay):用于绘制文字的图层。
-
图片图层(GroundOverlay):用于展示用户传入图片的图层。
-
全景图图层(PanoramaOverlay):在全景图内标绘兴趣点,支持自定义图标样式。
public class ItemizedOverlay<Item extends OverlayItem>
首先自定义点OverlayItem,在单击或长按事件中add该item到图层中,然后重写onTap的两个方法:
boolean | onTap(GeoPoint p, MapView mapView)
处理一个点击事件。
|
protected boolean | onTap(int index)
覆盖这个方法去处理一个item上的点击事件。
|
定位功能:
通常定位的方式有:
GPS,A-GPS,WIFI,基站
根据不同的方式,设置定位provider,
然后在listener中设置定位成功后的回调
基于定位的围栏功能的实现:
设置参数:围栏中心坐标,围栏半径,持续时长
设置回调,当定位坐标超出围栏范围后提醒(如响铃或振动)
(注:围栏应当可以设置进入或走出不同的回调)
导航功能:
地图中的导航可以理解为带有语音的实时的显示当前位置信息并提示下个路口距离及如何转换的过程
相关的有TTS,导航界面,路线数据(云端或离线)
初始参数:
start,end,policy//起点,终点,导航策略
分享功能:
包括分享点信息,分享截屏等
关键类或方法知晓:
根据两点经纬计算距离:// 地球上的两点要考虑到地球是近球体,计算过程需要知道地球半径
参考:
http://www.cnblogs.com/ycsfwhh/archive/2010/12/20/1911232.html
http://www.oschina.net/code/snippet_96894_33239
API中可能会提醒DistanceUtil相关工具类
GeoPoint(int latitudeE6, int longitudeE6)// 地理坐标点,纬度,经度
MapController// map控制类
Projection //投影接口类,表示地理坐标与地图view上坐标转换的接口,通常是内部实现