代码改变世界

基于GMap.NET桌面客户端的漂亮地图应用

2012-10-11 15:12  GPS视频平台产品经理  阅读(4382)  评论(0编辑  收藏  举报

 对于经常做信息化的开发人员来说,如果第一次开发地图应用可能要走很多的弯路:

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.jt808.com/?tag=gmap-net

但是这个程序也存在以下问题:

1)虽然解决了最底层的地图获取、投影和瓦片展现的问题,但是可扩展性不好;

2)图层、图元、文字标注的关系比较弱,需要重新封装,按照传统GIS引擎如ArcGis和Mapinfo的方式来改造;

3)业务信息的集成、业务数据的展现和操作没有考虑,如图元和业务信息的关联和信息的传递和事件触发、数据交换,需要提供一个粒度更大的开发包,才能非常方便的操作;

4)只能本地持久化,无法满足网络版的软件需要考虑将地图同步到各个客户端的要求。

要解决在实际开发地图应用、GPS应用、地理信息系统中的比较繁琐的部分,对常规、公用的功能进行了抽取、强化,在架构、接口和事件处理的设计上更加富有可扩展性,对与需要进行扩展的业务逻辑、数据交换、协议等以插件的形式进行了重新的设计。

1.对GMap.NET在进行更加友好的封装,未来能够达到拿来即用的效果,使用者可以更加方便的集成到自己的业务系统当中,如物流运输、地理信息管理等。

2.解决天朝GPS加偏处理造成的地图偏移问题;

3.在版本稳定后,推出GPS开发包, 计划在年底公布源码, 开发者可以在此基础上进行更加有创意的开发工作;

4.对于地图、图层、图元、标注、事件、业务信息交互、算法等进行了重新的设计。

5.不仅可用于GIS,也可用于数据的可视化表现,如市场占有、区域等级划分等等;

6.所有的图层、图元都直接持久化在服务器端,保证了网络版软件的地图信息同步的要求。

地图应用程序的界面设计规范如下:

  • 工作区要尽可能大,能够全屏设置,并且能够调整区域大小,同时用户需要看的信息要尽量组合分区集中在一屏当中,避免左右上下拖动;
  • 尽量使用鼠标事件来代替按钮,如鼠标移动到某一对象时,显示对象的详细数据,双击对象或记录显示信息等;
  • 当数据信息多时,尽量使用标签页,而不是弹出窗口,避免窗口杂乱或信息重复加载;
  • 分区: 顶部工具栏,左侧导航区,底部数据信息显示区,中间是监控工作区,右下是报警信息区。
  • 监控软件的特点是长时间对着电脑屏幕监控,也就是看的多,所以界面风格要追求保守、简洁,清晰,避免使用3D突起、渐变、五颜六色等风格,造成视觉疲劳,过度追求炫酷界面,则用户体验不持久,时间长了容易审美疲劳。大家可以参考下chrome浏览器的界面,再对比下Firefox和IE的界面,就应该清楚了。
  • 好的地图图标也是很重要的,当地理标志密集显示的时候,需要选择不引起疲劳的谈色调图标,

     可以参考我写的软件,让你很快又一个思路, 需要购买源码的可以联系我。


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在地图上对坐标处理,无偏差显示;

地图纠偏办法及C#代码

GPS坐标地图纠偏 已下载 121 次

6.地理位置解析

  6.1.对于无意义的经纬度坐标,转换成可读性强的地理位置.