写点什么

Esri 何超谈基于 ArchGIS 的 Javascript API

  • 2013-06-14
  • 本文字数:2350 字

    阅读完需:约 8 分钟

地理位置信息服务本身具有良好的线下和线上属性,通过暴露数据接口的 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 的强大的地理分析、预测功能,为互联网公司提供除地图之外的,更多专题信息、更多具有“地理”印记的信息。

2013-06-14 00:198320

评论

发布
暂无评论
发现更多内容

Android企业级实战-界面篇-3,oppo android面试

android 程序员 移动开发

Android-开发必看---Flutter之全埋点思考与实现,你了解过移动端适配吗

android 程序员 移动开发

Android-性能优化-ANR-的原因和解决方案,【一步教学,一步到位

android 程序员 移动开发

Android-春招-面试经历-2019年,已收藏

android 程序员 移动开发

Android-高级开发面试题以及答案整理,android基础开发

android 程序员 移动开发

Android中级面筋:开发2年的程序员如何短期突击面试?跟着这几步去准备

android 程序员 移动开发

Android-记一次解决问题的过程:从源码中分析永远是解决问题的最有效方法

android 程序员 移动开发

AndroidAnnotation,android计算器实验报告

android 程序员 移动开发

AndroidJetpack Livedata最详尽的使用场景分析,html5移动端

android 程序员 移动开发

Android事件分发机制,总结到位

android 程序员 移动开发

Android-系统开发_四大组件篇----探讨-Activity-的生命周期

android 程序员 移动开发

Android-茫茫9个月求职路,终于拿满意offer,最新大厂程序员进阶宝典

android 程序员 移动开发

Android~DataBinding使用,androidsdk开发实例

android 程序员 移动开发

Android事件分发机制三:事件分发工作流程,开发者必备的顶级Android开发工具

android 程序员 移动开发

Android-怎么就不卡了呢之Choreographer,android开发实例大全

android 程序员 移动开发

Android-源码分析-Dalvik-虚拟机创建过程,android棋牌游戏开发

android 程序员 移动开发

Android-金三银四跳槽季,拿上攻略有底气!,持续更新大厂面试笔试题

android 程序员 移动开发

Android-黑科技保活实现原理揭秘,kotlin开发微信

android 程序员 移动开发

AndroidX,斗鱼直播Android开发二面被刷

android 程序员 移动开发

Android一线BAT公司面试题你会几道?都解决完就可以进大公司了(1)

android 程序员 移动开发

Android事件分发机制五:面试官你坐啊,android串口开发入门

android 程序员 移动开发

Android-系统开发_四大组件篇----探讨-Activity-的生命周期(1)

android 程序员 移动开发

Android-面试官:性能优化我就问这些问题!能不能刷到我就看你的造化了

android 程序员 移动开发

AndroidStudio Gradle第三依赖统一管理,android 工作资料

android 程序员 移动开发

Android—Dagger2-让你爱不释手--重点概念讲解、融合篇

android 程序员 移动开发

Android一次完美的跨进程服务共享实践,android图书管理系统源码

android 程序员 移动开发

Android-目前最稳定和高效的UI适配方案,flutterandroid版本

android 程序员 移动开发

Android6,阿里P8大佬亲自教你

android 程序员 移动开发

AndroidX了解一下,Android开发框架

android 程序员 移动开发

Android—用最简单的案例Demo带你分析解读:Android观察者模式

android 程序员 移动开发

Android一线BAT公司面试题你会几道?都解决完就可以进大公司了

android 程序员 移动开发

Esri何超谈基于ArchGIS的 Javascript API_语言 & 开发_李雪韬_InfoQ精选文章