2013 年 11 月 28 日,高德地图在一场小规模的 LBS 开放平台开发者活动上分享了有关 LBS 的技术答疑、如何开发出省电高效的地理位置类应用的技巧、如何利用高德地图API在自己的应用中添加定制化的点等。清华大学的姜海老师也作为高德地图的合作伙伴进行了分享,他开发的iOS 应用“摇摇公交”获得了2012 高德地图杯中国LBS 应用大赛二等奖。
首先,LBS 开放平台产品经理张群对开发者们经常问到的问题进行了答疑。
Q:高德地图 API 目前支持哪些开发平台?
A:目前支持 iOS、Android、WP、Windows 8、黑莓和 HTML5。
Q:开发者利用高德 API 制作了付费应用,是否需要给高德付费?
A:目前,高德地图 API 是完全免费的,但是有并发数与访问限制(具体限制见高德地图API 官网)。
对于想要得到更多资源的用户,可以升级到高德地图API 专业版,预计在今年12 月底会上线。
Q:是否支持国外地图和定位?
A:目前支持大陆和港澳台,国外暂不支持。港澳现在已经支持基站定位,台湾地图预计到 12 月底就会有,基站定位预计到明年会跟进。
对于确实需要同时支持国内外地图的开发者,因为高德地图采用了国测局的 gcj-02 坐标系,跟 Google、苹果等地图供应商是一致的,而且也有合作,可以直接迁移过去。
Q:高德地图 API 的优势在哪里?
A:支持的平台多;自采数据,自融合,数据更新频率和准确性高。基础底图一个季度一更新,其他数据审核通过即更新;阿里云的硬件条件;跟几亿条淘宝门址数据融合,更精准的 geocoding,通过地址就可以定位,比地理编码更精细,准确度大大提高;在传统 GIS 行业的积累。
Q:新版 API 性能如何?
A:旧版是 2D 栅格数据,新的 3D 版本使用 OpenGL 内核绘制矢量地图,消耗会比旧版增加一些,但有一些技巧可以提高效率、省电。
Q:高德是否提供服务器端的 API?
A:有基于 REST 的接口,开发者以 http 请求方式发送参数即可使用搜索接口。这个接口暂时没有上官网,目前是通过一些渠道分发给少量用户。年底会正式上线。对于免费用户有次数限制。
Q:高德地图 API 支持哪些定位方式?
A:Wifi+cell、GPS、混合,三种模式。返回的地址可以在 Google 地图和苹果地图正确显示。
Q:是否支持 GIS 平台的特有数据格式?
A:用户需求量还比较小,暂时不支持。但是,其实这些数据格式都是公开的,读取的实现并不复杂。
Q:高德地图的实时交通覆盖多少城市?
A:旧版支持 33 个城市,新版增加到 47 个城市(见官方FAQs )
Q:通过 cell 方式取到了基站的位置,如何转换成经纬度数据?
A:这方面需求较小,暂不提供。
Q:高德地图 API 免费的时限有多久?会不会用着用着又不免费了?
A:高德地图 API 会一直免费,只是有调用次数的限制。12 月底要推出的收费专业版主要是做底图的定制化和一些功能的封装,高德内部有一个政企部门专门负责这一块。
Q:如果发现地图数据有错误,有哪些方法反馈?
A:你可以反馈到我们的 API 邮箱(api@autonavi.com)和技术支持群(250019928/76260931/279447957),另外高德地图 App 自己也有一个反馈入口。收到反馈后,数据生产部门在验证后会立刻更新,数据最快半个小时即可上线。
Q:高德地图 API 在带宽使用效率方面是否有改进计划?
A:建议使用离线数据以避免加载请求。
接下来,高德地图 API 产品经理朴春植分享了 Android 3D Map SDK 的优化经验,以提升 App 的效率、降低耗电量。省电主要有几个方面可以实现:
- 硬件方面:尽量减少使用 GPS 硬件、陀螺仪的次数。Wifi 和基站的误差大约在 150m 左右,可以考虑以时间和距离两个纬度减少定位频率,如 1 分钟定位一次,走 50m 定位一次等。陀螺仪也是很灵敏的,默认可能 0.01 度就会触发,可以设置为 1 度甚至 2 度变更才触发
- 减少网络使用:压缩传输数据、多用内存缓存和本地缓存。减少数据传输方面,以前的栅格切片一个 20k,对应的矢量地图只有 2~3k;用 json 相比 xml 也可以减少传输的数据量
- 代码方面:主要是 CPU、IO、启动线程数量这三方面。用内存缓存来减少 IO。记得停止线程以控制线程数量。降低 OpenGL es 的刷新率,50 帧就够了,地图不动的时候是不用刷新的
- 减少绘制:屏幕以外的地图不用绘制
- 上线新版之前做好测试,确保 CPU 占用率无明显增长,内存占用不会一直增多,流量和电量消耗比之前好。可以使用 top 命令或 ADT 工具查看占用率
朴春植还分享了如何使用 API 来添加自定义的点,包括设置自定义锚点图的相对位置、拖拽实现、个性化图片展示、以及动画点的实现等。
然后,清华大学的姜海老师分享了从做摇摇公交积累的一些数据和心得。姜海自己的研究方向是离散选择、数据挖掘、优化模型和算法,摇摇公交是为了解决自己的痛点而开发的一个应用,目前仅支持iOS,已经在AppStore 上积累了20 万用户。
姜海介绍,在他做摇摇公交之前,市场上已经有了很多公交类App,包括百度背景的创始人做的爱帮公交、8684 公交、个人开发者做的公交闹铃、图吧地图的彩虹公交、搜狗公交、百度公交、以及大连团队做的熊猫公交等。
为什么公交类应用这么火,以至于很多做了地图应用的厂家还要单独做一个公交类应用?姜海引用了百度的一句话:
“百度地图有三分之二的用户都用它来查公交。”
但是,姜海觉得这些应用都太难用了。他用数据表示其他用户也对这些应用不满意:在一次公交类应用的调查中,42% 用户对流量消耗不满意,40% 用户对查询结果不满意。尤其对于2G 网络的用户来说,在线查询往往只能看菊花转个不停;而离线查询方面,要么必须输入站点,要么基于之前在线的浏览历史,用户体验并不好。
为什么离线搜索这么难做?姜海表示这是因为手机的内存和计算能力有限,PC 上的算法在手机上都不好用。而为了在本地储存更多数据,也会导致离线包越来越大。据说8684 每年的带宽成本要好几万,都是用户下载离线包给下的。
摇摇公交主要有两件事是自己做的:
1、离线查询算法 2、数据结构
这两块是摇摇公交的核心竞争力。摇摇公交目前为 14 个城市提供离线数据,北京的离线包包含八万多个 POI 地名。至于 GPS 调用、城市信息、地图展示,都是直接用高德 API 实现的。POI 匹配和路线查询,针对在 14 个城市、网络不好的用户采用自主方案匹配,对于其他用户采用高德的匹配方案。
产品设计方面,摇摇公交采取如下思路:
1、用户在搜索时,提供一个只搜索目的地的简洁界面,无需输入起点 2、通过摇手机或点搜索按钮触发搜索之后,应用会搜索起点附近 1.5km 内的 10 个车站和终点附近的 10 个车站,计算出可搭乘的路径,一般有 20 多条路径 3、对这些路径按起点车站进行分类,并用不同颜色标注可直达的车、需要换乘的车等 4、无论是在线还是离线查询都会上传信息用于统计,同时给用户建立 profile 判断其偏好,比如他是喜欢多走路还是喜欢坐地铁,在之后的搜索中影响他获取结果的排序
姜海表示本来想月底发布 Android 版,现在决定只放 SDK,因为自己精力有限,宁愿把这个开放出去,让想做的人去把应用做出来,说不定会有更多创意。
最后,高德移动端 SDK 产品经理李乐介绍了本次新版 SDK 的一些更新内容。各平台共有的更新包括:
- 增加绘制大地曲线,用于绘制航线
- 增加驾车返回途径城市的功能
- 47 个城市实时交通支持
- 在矩形和圆形之外,增加多边形区域 POI 搜索
Android SDK 特有的更新:
- 开放 OpenGL 接口 CustomRenderer 类
- 支持将 view 转化为 marker 图标
- 添加获得当前可见区域内所有 marker 的方法 GetMapScreenMarkers
- 开放默认定位图标的旋转
- 自定义绘制实时路况的道路标记颜色,包括畅通、缓慢、拥堵、极度拥堵四个级别
iOS SDK 特有的更新:
- 默认显示指南针
- 默认显示比例尺
- overlay 支持绘制虚线
- 开放定位参数的设置接口 MAMapView LocationOption
- 新增 zoomlevel 属性
- Annotation 数组,调整地图视窗到合适的显示范围
另外,高德地图 12 月将发布的新版本将支持室内地图,覆盖全国三千多个商场等建筑。SDK 对室内地图的支持会迟一些才有。
评论