做了快半年地图相关的东西了,觉着是时候总结沉淀一下自己在这段时间的所学,分享下学习的经验和学到的知识。我主要想分享我在从一个从未接触过地图的小白,到现在能完成正常地图相关需求的开发者的心路历程和我趟过的那些坑,以及如何入手学习百度地图。我会把我学习的方法分享给大家。
首先还是要感谢一下百度公司提供百度地图api;感谢如此丰富的文档和demo,如果不是百度优秀的接口文档和示例demo,我无法快速的学习和使用百度地图;感谢百度论坛非常及时的回答我的疑问,非常感谢!
使用百度地图首先要有一个百度账号,然后申请ak,有了ak才能开始使用百度地图。对于ak我只有一个问题需要强调下,就是现在ak分为服务端ak和浏览器端ak,申请的时候注意ak的类型。我们一般用的是浏览器端的ak,把这个ak放到你html页面上就可以访问百度地图了(至于具体放在哪里,参考demo)。服务器端ak主要是调用百度一些api时使用。申请ak步骤:http://jingyan.baidu.com/article/5d6edee210e68099ebdeec69.html
对于像我这样的小白,我建议一开始学习百度地图,要先看其示例demo,上面用demo的形式实现了大多数常用的功能,比如在地图上画矩形、多边形,计算其面积;画折线,编辑折线;在地图上描点,弹出提示框,增加触发等等基础功能。附上链接:http://lbsyun.baidu.com/jsdemo.htm。
我分享一些demo上没有或是表述的让新手模糊的,你却可能用到的功能;以及多个demo组合起来可以实现的一些比较实用的功能。
1.
问:我在开发的时候,总不小心点到地图上默认的触发事件,蹦出各种弹框,实在烦人,我并不需要这些功能。如图
答:在创建map的时候,增加enableMapClick:false的属性,可以设置地图上默认点击事件的关闭。官方上说这个属性是 是否开启底图可点功能,默认启用
举个栗子:map = new BMap.Map('map', {enableMapClick: false});
这个demo在百度官方demo中有:地图示例/关闭默认地图POI事件。
既然有为什么还要写呢?因为开始我找这个问题解决方案的时候,完全不懂POI是什么,和这个demo擦肩而过了,坑我替你们踩过了。2.问:我们要追踪车辆轨迹,车辆跑出地图范围的时候,希望地图可以自动缩放。
答:在demo中 地图示例/获取地图显示范围 里可以得到获取地图范围的方法,然后通过 map.getZoom() 可以获取当前地图缩放比例,通过 map.zoomTo(数值);可以设置地图新的缩放比例,里面可以是数值,也可以是表达式。当车辆坐标点不在地图范围内了,获取当前缩放比例,然后在当前缩放比例上加一,这样就能实现了。通过这些也可以做地图自适应功能
3.问:我在一些情况下希望我打上去的marker点不被新的marker覆盖,请问如何实现
答:marker.setTop(true);这样可以设置该marker点图层置顶。
4.还有很多东西想要分享,但总觉着整理的还不充分。。。先分享到这吧
----------------------------
但示例demo还是处于一种初级的阶段,想实现更多功能,或是更灵活的实现一些东西,需要读百度地图api的参考类,链接如下:http://lbsyun.baidu.com/cms/jsapi/reference/jsapi_reference.html
对于一些不知道如何实现的功能,可以去百度论坛上求助,一般一到两天都会有人回复的,链接如下:http://bbs.lbsyun.baidu.com/forum.php