对地图开发的理解

本文详细介绍了地图应用开发的基础流程和技术要点,包括地图组件的添加、各类图层的使用方法、地图功能实现等,并探讨了定位、路径规划、导航等功能的具体实现。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

对地图开发的理解

基本上对使用第三方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):在全景图内标绘兴趣点,支持自定义图标样式。

我的位置图层:需要定位并显示在地图中时使用该图层,通常添加一个图片,有时也可能需要有指南针的效果,这时可以自定义View,根据方向传感器得到的数据旋转图片的角度实现指向(某些API可能已代为实现)
相关方法的关键词:compass,tap,locData,marker// 指南针,点击,位置数据,图片

POI搜索图层:POI理解为兴趣点,也就是搜索或相应功能生成在地图上的一类点
关键方法:getPoi,setData,size,tap// 得到指定index的poi信息,设置数据(数个poi的arrayList),poi的size,点击到index的poi时的事件

自定义图层:通常单击或长按地图时显示的点,是继承该图层实现,包括地图上其他响应事件(如果API中未提供KEY事件,可以考虑将所有响应操作集中到该层中实现)
public class ItemizedOverlay<Item extends OverlayItem>
首先自定义点OverlayItem,在单击或长按事件中add该item到图层中,然后重写onTap的两个方法:
 
 
boolean onTap(GeoPoint p, MapView mapView)
处理一个点击事件。
protected boolean onTap(int index)
覆盖这个方法去处理一个item上的点击事件。
// 分别表示1点击到图层中非item 的事件回调;2点击到index的item时的事件回调



弹出窗图层:当点击某个点(我的位置或POI或自定义图层中的点),弹出一个具有数列按钮的窗口,其中有对该点的信息显示,分享,详情的查看,导航该点等一系列可自定义的操作
// 新版的地图应用似乎不流行这个了,基本上都改为从底端滑出一个view显示信息
关键方法:show,hide

路线,公交等图层:用以显示步行,驾车,公交等路线的图层
关键方法:start,end,data,onTap// 起点,终点设置图标等,getData,setData等,onTap(index)事件

5.其他类型的图层界面:实时路况图,卫星图,3D图等,一般API提供的话设置比较方便,如果要自己实现,后续再研究

6.地图相关功能使用:
POI检索:
通常有
1根据当前位置的周边搜索
2根据城市的搜索
3根据经纬范围(矩形范围,或是圆范围)
搜索到后在回调中添加poiOverlay层,最后refresh()显示出来

地址查询:
给出一个地理信息或关键词,查询得到其经纬度

逆地址查询:
给出一个经纬(比如点击mapView上某个点),查询出该位置的地理信息及周边POI:中国北京市XX街XX门XX号

路径规划:
路径规划实际上也是检索,只是检索参数变为:
start,end,city,policy// 起点,终点,城市,策略
通常有三种规划:
步行
公交// 公交可能有根据路线查询的方式
驾车


定位功能:

通常定位的方式有:

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上坐标转换的接口,通常是内部实现





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值