主持人:
下面有请百度Web前端研发部高级工程师贾铮演讲,他演讲的题目是《详解百度地图API的功能、技术与应用》,掌声有请!
贾铮:
各位开发者,大家下午好!
刚才主持人介绍了,我是来自百度Web前端研发部的,我们在2010年4月份正式对外发布了地图API产品,然后我们不断收集开发者的需求,以及我们在地图功能上和地图API架构上都有不断的提升,今天我在这里跟大家分享一下,我们在这一年当中地图API发生了哪些变化,我主要从三个方面来讲。
第一、地图API的功能特色。
第二、地图API技术优势。
第三、开发者如何利用地图API提供的资源搭建更好的地图应用。
我们先来看功能特色,如果各位开发者了解和使用过地图API的话,可能知道我们在2010年的时候当我们开始公开地图API的时候描述是这样的,到今年我们的概念发生了变化,现在我们在地图API后面加上了系列两个字,这就意味这我们地图API不仅仅是一种形式,我们提供的是一种多平台、多种类型的API服务,具体有哪些呢?开发者如果开发浏览器版本的地图应用,它可以选择使用我们之前的JavaScript版本和Flash版本和静态图版,我们还有移动客户端的移动版、静态图版和Web Services和其他形式Web Services,目前我们已经开放JavaScript版和Flash版本。
我们在针对地图的功能上相当丰富,比如说我们有地图核心的操作和展现,我们会提供地图的坐标转换,我们是基于事件开发的。再往上我们提供了控件、覆盖物、图层、热区等等,再上面我们公开了一些数据的服务,比如说本地搜索、路线规划、定位、地理编码等等。目前JavaScript版本涵盖了所有的功能,我们的移动版本也涵盖了大部分的功能。
我们在接口部分就像金字塔一样,高层次接口用起来非常简单,我们还有低层次的接口,这样的接口主要是面向高级的开发者和用户,满足他们对定制化的需求。我们还有可视化工具,这个时候是为了基于开发者的身份,他即使不会写代码,不会写程序,他也可以创建这样的地图应用放在网站上,比如说他做了地图生成器。我们针对团购行业也做了团购插件,我们有开源的Library,你可以根据自己的需求修改你们的代码,因为我们这些Library都是以开源的形式提供的。
另外,我们的浏览器版本是支持手势操作的,我们还有很多的动画特效,比如说用户用鼠标拖拽地图之后,地图会用户拖拽的方向和力度产生动画效果,进一步增强用户的体验。最后我们还有一个定位,定位方式可以通过GPS或者是通过WiFi定位到当前用户的位置。
刚才是介绍我们之前的功能和特色的东西,接下来我介绍一下地图API在未来的规划,主要是在功能方面,是这三个方面,一个是图像,一个是数据,一个是移动版。现在我们看一下图像方面,我们在全国300多个城市开通高清晰的卫星影象,实际上刚才我在四楼的时候也有开发者过去看,他们看到说这是百度地图吗?如果有兴趣的话可以再到四楼看一下我们高清晰的卫星影象效果,此外我们还考虑定制化的底图,开发者可以根据自己的需求修改底图的道路、校区、绿地、水系等等,它可以改变路线的颜色,它还可以控制展现API点,是显示某一类的信息,我想做旅游方面的地图,我希望在地图上打上旅游景点,这些都是可以通过地图定制化去实现。
接下来是数据相关部分,我们提了新的概念叫做Place API,它主要是负责数据跟搜索相关服务的,它跟我们目前的检索服务有什么样的区别呢?首先它是通过ID管理数据,这是什么概念呢?我通过一个具体的例子来说一下,假如说你想开发一个有关网站,你通过API获取餐馆的数据,你自己这边搜一些餐馆的点评信息,除了点评之外还有一些图片,总之是跟餐馆相关的信息,你可能会通过餐馆的名称加上地址组合在一起描述。假如说有一天餐馆不在位置了可能通过API获取不到这样的数据了,最后产生一个问题会导致你的连接关系会失效,你也可能想到既然数据可能会不存在,干脆我把它放到自己这边,我来管理数据,这也是一个办法,但是这样会增加你的维护成本,首先你需要关心数据的存储,同时你还要关心它的检索。如果它是基于ID的,通过API获取的相关数据有一个ID,通过这个ID你可以把餐馆跟数据绑定在一起,如果餐馆不在了或者发生了相应的变化,我们在数据里增加属性说餐馆不在了,我们不用担心它的稳定性的问题。
除了通过ID管理数据以外,我们还打算尝试定制化搜索,也就是说不同的网站它最数据检索的需求可能不太一样。目前来讲通过我们地图API所提供检索的策略它都是一致的,未来开发者可以根据自己的需求,比如说一个周边搜索,你是希望严格按照距离还是希望跟距离结合在一起,将来这些东西都是可以由开发者定制的。下面是移动版相关的内容,首先我们打算在移动版和API也要支持离线地图,它能够给最终的用户节省很多流量,它可以节省95%的流量,也能提升70%的显示速度。离线地图包可以通过WiFi下载。还有一个就是语音输入,大家都知道在手机上输入内容是比较头痛的事情,我们开放语音输入以后,用户只要说话就可以完成查询服务。
还有一块是现实增强,它是利用移动手机的摄象头,把当前的影象显示在手机屏幕上,这样使得它有很强的临场感,实际上刚才我提到移动版相关的东西已经在客户端产品上实现了,关于这几块的东西大家可以到四楼的展区实际体验一下。
刚才我们介绍了百度地图功能上的东西,接下来我会介绍一下地图API在技术上的优势,从数据、兼容性、性能、社区支持这块来介绍。数据方面我们有全国3000万POI数据,我们支持300多各城市的驾车步行导航。我们在兼容性方面已经推出了JavaScript版本,我们同时还可以适应不同的API,比如说在iPhone4上可以让用户看到高清晰。网络性能最主要的一点就是速度,包括本身地图展现的速度,也包括第三方使用我们的API之后,会不会对它的网站产生速度的影响。实际上速度是很多因素来决定的,比如说资源的大小,用户当前的网络环境,有很多因素实际上我们是不可控的,我们能做到的是控制下载资源的大小。我们在JavaScript版本发布以来就在不断的优化,去年我们发布的时候所有的数据打包在一起下载的速度是91K,目前最新的百度地图API版本它的脚本量可以达到32K,这个不是我们最终的数据,我们还会不断的挑战数值,让它降的更低。
在移动版这边会针对移动网络做进一步的优化,比如说长连接、并行请求、支持断点续传和协议精简。在内存性能这块我可以举一个具体的例子,我们今年和去年的时候都搞过世界地球一小时活动,全国的网友都可以在上面标注自己的位置,大概点的数量有十几万个,地图不断的添加和移除这些点,地图的线都是使用率很频繁的。用户使用长以后会不会大致内存不断的上涨,我们在内部有过这种测试,比如说反复去添加删除这些点,我们运行一千次、两千次、三千次之后内存的表现是相当平稳的,你不用担心用户浏览器的内存有变化。我们的定位刚才已经提到了,我们支持GPS方式定位,也支持基站方式定位,也支持WiFi定位,网络覆盖率达到96%。我们还有社区的支持,如果各位开发者在使用地图API遇到某些问题,可以通过百度API交流区,也可以通过贴吧交流,我们也可以有邮件沟通,我们在社区贴吧或者是群里面,我们有专门的工作人员为大家提供技术支持。
刚才我们提到了地图API在功能上和技术上的东西,下面我介绍一下地图API应用方面的东西。也就是说开发者如何用API提供的资源搭建地图应用,有哪些典型的应用方式。首先,百度地图API从去年开放到现在大概有八千到一万家网站使用了这样的开发。
下面我们按照不同的行业分别举一些典型的案例,第一块是房产酒店最核心最重要的就是要标注房产和酒店的位置,下面会提供一些周边的信息。比如说像房产周边的交通是不是很完善,教育设施、医疗设施等等。酒店周围的交通状况和餐饮状况,这个是二手房的例子,它通过地图API的标注把校区楼盘的位置标注在地图上,同时它通过周边检索的服务分几大类。比如说周边的中小学,周边的医疗,还有周边的餐饮类,把这些数据展现在网页上。旅行指南可以根据用户的停留时间,用户的喜好和用户的旅行强度,你可以帮助他推荐个性化的旅行路线,同时你可以帮助他计算相关的费用。
举一个例子,比如说我们住在北京饭店他用一天的时间想到周边玩,通过推荐可以告诉他你的旅行路线。比如说你可以从酒店打车到哪里,打车的费用是多少,同时还可以提供酒店旁边的餐饮信息。在社交网络里面也可以加入地理信息相关的东西,社交网络里面的每一个人都可以在地图上标注自己的位置,这样他可以结识周边的邻居,查询周边的生活信息,比如说哪个商场有折扣等等。这是邻居的例子,他将地图的功能、社交网络、签到、点评通过百度地图API整合在一起。
下面是移动应用,它最重要的一点就是定位,你要需要获取当前用户的位置,然后去检索周边的地点。我不知道在座的各位有没有用这样的签到服务,接下来他可能会搜到国家会议中心,进而你在会议中心可以做签到或者是做做一些攻略等等。比如说去哪儿旅游,它可以定位到当前用户的位置,同时提供用户的信息,从定位点到目标可以驾车等等。
刚才我介绍几个应用,可能都是每个行业里面最基本的应用,我相信在座的各位开发者可能有比我更好的想法,我也希望各个开发者能够充分发挥自己的创造力和想象力搭建你们自己的地图应用,我今天的演讲就到这里,谢谢大家来参加百度世界的开发者分论坛,谢谢大家!