The Look of Map APIs

这两天试用了几个主流的Map API,比如Google、百度、天地图、OpenLayers、Bing、Here等。虽然花得时间不多,而且我对JS所知甚少,但还是写了点代码:http://lab.hmfly.info/map_api/index.html 这个东西很简单,就是各个API的基本用途。通过拖动虚线红框内的Google地图(左上)可以使各个地图联动起来,反之不行。这个2×3的表格内,哪块是哪家地图还是很明显的。

比如南京新街口:

又如伦敦格林尼治:

通过两个全图就能发现:(1)各家在中国大陆的地图都是有偏移的,而且各不相同。(2)国外是没有偏移的,当然百度没有国外数据,天地图没有国外大比例尺数据。 几乎所有的地图API都是地图控件加上Web服务。一个地图控件怎么写,这本书有介绍。Web服务无外乎Geocoding、Direction、Place等等。坐标系一般用Web Mercator,天地图是CGCS2000,无投影。

下面详细介绍(相对)下:

Google:目前地球上最强大的在线地图,瓦片地图、Web Mercator坐标系都是Google发明的,而且也已经成为了事实上的标准。Google地图比较独特的功能有:(1)Styled Maps,可以自定义Road地图的样式,包括地物和注记的颜色等等style。应该是服务器实时根据样式切图的。同样的地图,Styled Maps的响应时间比普通的慢一些,大概一秒钟的样子。例子中的Google地图Style是文档中抄过来的,墨绿的样子。(2)自定义瓦片投影,自定义投影对WebGIS来说不算什么,但普通Map API中支持自定义瓦片投影的貌似只有Google。当然,瓦片是要在服务器上切好的,前端要定义投影函数等等。(3)Visualization库,支持Fusiontable、Google Earth等等。Google的一大优势就是产品丰富,想做Mashup之类在自己的生态系统内就能玩得很好,而且像KML这些都已经成为了标准。还有别的像Google公交换乘计划,可以自己根据Google定义的格式提交本地公交数据,被采纳之后,所在地就能使用公交换乘了。Google的所有作为都是为了让信息流动更便利,并且自己也能从流量中获利,地图也是。

百度:国内做得最好的地图,主要是本土化做得很好。百度地图API没给我留下太深印象,可能是因为模仿Google模仿的比较好。文档里面这句话倒是让我记了:“国际经纬度坐标标准为WGS-84,国内必须至少使用国测局制定的GCJ-02,对地理位置进行首次加密。百度坐标在此基础上,进行了BD-09二次加密措施,更加保护了个人隐私。”我不明白地图偏移(加密)和个人隐私有什么关系,你把地图偏移了,相应的个人位置也会偏移(比如GPS点),这不是负负得正,相对位置还是没有变么。比如你在新街口,百度地图的新街口和Google地图的新街口坐标位置是不一样,但却是都是在新街口啊。个人用户谁关心坐标位置,有多少人连什么是经纬度都不清楚呢。还是我太愚钝了,不明白偏移的用意?

天地图:国家测绘局做的。瓦片格式自定义的,前端API是在OpenLayers上改的。天地图从任何方面都比不上任何互联网地图,除了在数据上可能会保持一定的独特性,比如资源3号卫星。天地图如果能在测绘成果共享上做出突破就好了,而不是着力在公共服务上,这是无用功。例子中的天地图用了国家节点和南京规划局节点的服务,也就是天地图·南京的服务。

OpenLayers:因为是纯粹的API,而且是开源的,所以可以支持各种各样的地图服务,从ArcGIS到Google Maps等等,也可以自己写扩展。OpenLayers是FreeBSD许可,基本可以随便拿来用,天地图的API就是在这上面改的,所以自主知识产权之类的事情还是少谈点安全。OpenLayers发布的很早,大概有5、6年来,类库显得有点凌乱。而且功能上也有点跟不上时代节奏了,特别是HTML5的趋势。OpenLayers 3将是一个完全重构的新版本,很期待。我例子中调用的是OpenStreetMap的服务,很简单。

Here:Nokia的地图服务,以前叫Ovi Maps。诺基亚转型失败后又取了这么个名字,还算不错吧。API是德国人做的,代码风格完全有点奇怪。Here本身功能强大,特别是三维效果很赞,用的C3的技术。可视化部分做的很强大,一个热图都有好几种方式。开发文档里面的示例浏览器也很有创意。

Bing:以前的Vitural Earth,整合到Bing里面就叫Bing Maps了。Bing Maps一直是一个很文艺的地图。比较独特的功能有:(1)最早支持航拍图,显然比影像更清晰,角度也更多。(2)MapType里面有一种auto模式,可以根据比例尺自动变换地图类型。(3)Venue,场馆地图,也就是室内地图。(4)英国地区支持collinsBartordnanceSurvey地图。Ordance Survey就是英国测绘局,测绘局的资料通过商业公司发布出来,省去了自己开发的麻烦,反正也做不好,这种模式不错呀。另外,Bing的相关背景资料做到不错,学习的好资源。比较蛋疼的是Bing的中国地图不是更全球同步的,Bing Maps API已经更新到7.0了,国内还停留在6.2上。我用的全球API,没有中国区的道路图,影像是有的。 下次再介绍一点非主流的API。

—————————————————————————————————————————

2.2更新,地址没变:http://lab.hmfly.info/map_api/index.html 去掉了Openlayers,地方有限,而且天地图的API已经可以代表OL了,等OL更新3.0吧。

Leaflet:号称最好的前端API,简单用了下,确实不错,很清爽,有插件机制。瓦片是Cloudmade样式化过的OSM,红色,很喜欢。

Modest:很简单,就如其名字,谦虚的地图,连Attribute都不标上,真是低调!瓦片是MapBox的,MapBox也是个金矿!

Polymaps:比较早的矢量地图API,支持geojson和svg。还是statmen出品,但貌似不怎么更新了。

Osmbuildings:有意思的东西,通过调用要素服务,获得矢量数据,在瓦片上呈现出“三维”的感觉。作者强调这不是WebGL,应该是简单的几何透视吧,百度地图那些放大到最大都有这样的效果,只不过百度是预先切好的图片。例子是叠加美国人口数据(json),棱柱图。

Kartograph:法国人的东西,romantic!例子很精美。基于几个开源库开发的,略复杂,我只是简单的加载了意大利的svg而已。他支持一些高级聚合算法、投影等等。

D3:最牛逼的数据可视化库了,最早是9月份在浙大听报告的时候听说的,现在3.0了。我关注geo部分,他支持几十种投影,还是正反算都有的!这让我等giser情何以堪啊!当然别的voronoi、cartogram等等也都有,巨大的金矿!例子是网站上抄的一个方位投影,化简了一下,可交互。 先告一段落,地图API主要是传统的和可视化的两部分吧,也很好区分,支持瓦片的肯定是传统过来的,支持矢量的肯定是偏向可视化的,当然两者是在不断融合的。基于WebGL的三维也会很普遍吧,比如cesium。

js写得真蛋疼!

—————————————————————————————————————————

3.27更新,地址没变:

主要是天地图更新了,1.0的api无效,更新了2.0的api。

可视化的api应该单独拿出来,等以后熟悉了之后吧。

增加了阿里云地图,拿来看看偏移量不错的。

貌似有点卡?

分享到:
  1. Pingback: 纠正地图偏差 | 曾经渐行远,未免心戚戚