对于经常做信息化的开发人员来说,如果第一次开发地图应用可能要走很多的弯路:
1.购买地图, 因为现在的谷歌和百度地图API,都是基于Javascript的,如果要开发C/S架构的桌面地图应用非常不方便。
2.可能会去找想Mapinfo、ArcGis这些地图软件进行二次开发,这个弊端太多了,开发资源少,周期长,发布时更加麻烦,都是基于桌面License的,收费很高,非常黑,看到Mapinfo和ArcGis论坛一堆堆的开发者浪费时间在这个上面,太痛心了。
现在Codeplex上有一个好地图开源程序GMap.NET,不是基于Google Map API的,封装了各种网络地图引擎如Google Map, Bing Map等,统一了操作,而且非常灵活,通过信息化功能的集成和改造,可以快速开发出一个很酷的桌面地图应用,一分钱不用花:
GMap.NET的教程,网上有很多,可以参考:http://www.ltmonitor.com/blog/?tag=gmap-net
但是这个程序也存在以下问题:
1)虽然解决了最底层的地图获取、投影和瓦片展现的问题,但是可扩展性不好;
2)图层、图元、文字标注的关系比较弱,需要重新封装,按照传统GIS引擎如ArcGis和Mapinfo的方式来改造;
3)业务信息的集成、业务数据的展现和操作没有考虑,如图元和业务信息的关联和信息的传递和事件触发、数据交换,需要提供一个粒度更大的开发包,才能非常方便的操作;
4)只能本地持久化,无法满足网络版的软件需要考虑将地图同步到各个客户端的要求。
要解决在实际开发地图应用、GPS应用、地理信息系统中的比较繁琐的部分,对常规、公用的功能进行了抽取、强化,在架构、接口和事件处理的设计上更加富有可扩展性,对与需要进行扩展的业务逻辑、数据交换、协议等以插件的形式进行了重新的设计。
1.对GMap.NET在进行更加友好的封装,未来能够达到拿来即用的效果,使用者可以更加方便的集成到自己的业务系统当中,如物流运输、地理信息管理等。
2.解决天朝GPS加偏处理造成的地图偏移问题;
3.在版本稳定后,推出GPS开发包, 计划在年底公布源码, 开发者可以在此基础上进行更加有创意的开发工作;
4.对于地图、图层、图元、标注、事件、业务信息交互、算法等进行了重新的设计。
5.不仅可用于GIS,也可用于数据的可视化表现,如市场占有、区域等级划分等等;
6.所有的图层、图元都直接持久化在服务器端,保证了网络版软件的地图信息同步的要求。
地图应用程序的界面设计规范如下:
可以参考我写的软件,让你很快又一个思路, 需要购买源码的可以联系我。
GMap.NET 主要的设计规划如下:
1.百度地图支持
在谷歌地图的基础上,增加了对百度地图的支持,如果将来Google地图万一被墙,也没有关系。
2.图层
增强图层对图元的约束,将图元的风格定义转移到图层上面来,对图层的定义变化将更新到该图层的所有图元,保证了同一个图层的图元风格必然是同一的,添加标注的时候,不需要对图元的风格进行个性化定义。
2.1.图层定义持久化到远端服务器,不在本地持久化,这样可以保证将变化同步到到所有的客户端,解决地图更新的同步问题;
2.2.增加图层图标定义、名称、标注可见范围, 图层和文字标注可以根据Zoom的大小而动态调整可见不可见,这样可以减小地图的数据加载量,提高地图的美观和性能;
2.3.图层增加、删除、修改、编辑功能,所有的更新将会同步到其他的客户端上;
2.4.增加动画图层,使得该图层的图元可以是GIF格式的动画展示在地图上,如交通灯、报警信号等。
2.5. 增加多种图层类型,如PNG图片、GIF动画、圆、矩形、区域、路线轨迹图层等;
3.地标
3.1.支持在线标注并持久化,反映到所有的客户端;
3.2.可以设置地标所在业务部门归属,并形成树状架构显示;
3.3.设置所在图层,风格自动遵循图层定义;
3.4.在线移动、增加、修改、删除地标;
3.5.自动设置地标的围栏,形成围栏报警;
3.6.增加了角度的参数,地标可以以不同的角度展示。
4.轨迹
4.1.轨迹增加了箭头来指示方向;
4.2.小车移动时,自动根据方向来调整车辆图标的角度;
4.3.自动计算轨迹的里程;
5.火星坐标、偏移、加偏和纠偏处理
5.1在地图上对坐标处理,无偏差显示;
6.地理位置解析
6.1.对于无意义的经纬度坐标,转换成可读性强的地理位置.