Esri何超谈基于ArchGIS的 Javascript API

地理位置信息服务本身具有良好的线下和线上属性,通过暴露数据接口的API实现多终端、多语言的调用,可以将其应用场景扩大化。而Web端在各种需求场景中又是最常见的,在6月6日的Esri空间信息技术开发者大会上,来自Esri的何超以Dojo Widget和Angular.js的开发流程为出发点,分享了他们对于构建大型Web地图应用的一些实践和想法。InfoQ借此机会采访了何超,听他谈谈ArchGIS Javascript API:

InfoQ:我们知道ArcGIS是一款非常给力的国际化地理信息系统软件,在提供Javascript API的时候,与ArcGIS本身的数据结构相比,有哪些特殊处理?栅格、矢量地图数据的存储方式分别是怎样的?

何超:ArcGIS本身提供了从ShapeFile到企业级数据库的各种存储方式以满足不同用户不同场景的需求。Javascript API在处理栅格和矢量地图的时候并不直接去读取Map Data,更多的是依附于ArcGIS Server所提供的RESTfull风格的各种不同类型的服务,如地图服务(Map Service)、影像服务(Image Service)等。因此,对于JS的开发者来说,大可不必去关心底层的数据是如何存储的,只需要了解ArcGIS Server所暴露的服务的相关信息即可。举个例子来说,对于大数据量的影像数据,我们在后台可能采取的是镶嵌数据集(Mosaic Dataset),这种方式进行存储,但是Arcgis Server并不会直接将地图数据暴露给用户,提供给用户的是一个类似于http://sampleserver6.arcgisonline.com/arcgis/rest/services/CharlotteLAS/ImageServer 这样的地址。用户是通过ArcGIS Server 的RestAPI来实现客户端与ArcGIS Server之间的交互。 JS API所接受的是ArcGIS Server所返回的图片或者是json数据。而对与用户本身在前端所加载一些譬如gps轨迹等数据信息,都是以json的格式处理的。

InfoQ:地图未来很重要的一个发展趋势是实景、三维、立体。那么,基于ArcGIS的JS API,会提供哪些地理三维模型的API方法呢?比如实现街景的图层拼接和建模的底层API接口、或实现全3D效果的地理物体,比如山川、立交桥、建筑物等。

何超:关于Web 3D,这个一直是Esri中国研发中心在开发,会在今年的开发者大会上给大家带来精彩的Demo演示。从我目前了解的情况,3D API跟之前的2D API非常类似,开发者可以很容易上手,其代码也很容易移植。Web 3D的API在原有2Dapi的基础上扩展了Geometry、Layer、Symbol、Renderer等,例如,symbol针对3D场景新增了BoxMarkerSymbol、CylinderMarkerSymbol、SphereMarkerSymbol、MediaMarkerSymbol。3D Map将平滑加载原有的2D Layer,支持跟2D几乎一样的Geometry和Symbol,以及更多的3D Symbol,如Box、Cylinder、Sphere等。同时针对Layer,Web3D新增了支持3D Model(如城市模型)ArcGIS3DServiceLayer和ArcGISElevationServiceLayer,以及贴地模式的Graphic。此外,3D API无缝结合2D API,部分类甚至可以共用(如InfoTemplate和Query等)。Web 3D的API还会提供一个类似于Flex Viewer的3D Viewer,实现3D应用的快速搭建。3D的API紧密的跟Esri的CityEngine、ArcGIS Server结合在一起,实现从建模到服务再到应用的一体化。

InfoQ:我们知道,现在移动终端发展很快,iOS、android两大平台的JS运行时差别较大,很多标签和接口的执行效果差别明显,webkit内核的实现在各个平台上都有所不同,性能差异很大。 那么,基于ArcGIS的JS API,在移动终端有哪些特殊的性能优化、机型适配方面的考虑呢?

何超:为了适配移动端的需求,ArcGIS API针对移动互联网做了很多的优化。首先就是对API library的大小进行了优化,提供Compact版本的API(~125kb)。至于浏览器和平台的差异,mobile版本的API也是基于dojo mobile的,所以这种浏览器的差异性就交给dojo来处理,可以说Dojo支持的移动设备我们API都是支持的。可以使开发者尽量少的去关心浏览器的差异,实现对开发者的友好。

举个例子来说,ArcGIS API在不同的平台上采用什么样的绘图引擎来绘制2维地图?我们知道不同webkit上在2D绘图上的选择是很多,可以用Canvas、可以用SVG,那对于不同的平台究竟用那一种?针对这种问题,ArcGIS JS API会基于dojo提供的dojo.gfx根据浏览器的不同来自己去判断、选择最适合该浏览器的绘图引擎。

再举个例子,ArcGIS API在PC浏览器上的信息弹出窗口POPUP和InfoWindow是很大很大的一个div,但是Mobile版本的API针对移动设备屏幕小的特点,提供了Infowindow lite和mobile popup这两个widget。

在对移动设备的兼容性上,目前3.5版本的API实现了对Android 2.2+、Blackberry 6+、iOS 3+等平台的全覆盖。此外,esri还体现了极大的兼容性,可以用在其他的移动端框架譬如(Sencha Touch、jQuery Mobile)的时候来调用我们的api。所以,可以说api在对移动设备的兼容性还是很好的。

InfoQ:ArcGIS功能强大,但是如果使用正版,需要很高的费用,不知在JS API方面的收费情况是怎样的?未来会以怎样的形式与互联网公司合作?会成为一个独立运营的平台吗?

何超:ArcGIS一直对开发者十分友好,所以JS API在用作开发、测试、评估等非商业用途的时候,是不收取开发者任何费用的。对于利用JS API开发的网络APP或者是移动APP需要用于商业用途的时候,则需要购买ArcGIS Server或者是需要购买ArcGIS Online的订阅(subscription)。 Esri一直以积极、开放的姿态,期待并正在与一些互联网公司展开合作。GIS中不仅仅有地图,在地图之外,还有地理,人文地理、自然地理、经济地理等。Esri希望依托ArcGIS Online这个云GIS平台,结合ArcGIS的强大的地理分析、预测功能,为互联网公司提供除地图之外的,更多专题信息、更多具有“地理”印记的信息。

你可能感兴趣的:(Esri何超谈基于ArchGIS的 Javascript API)