--- layout: post title: 百度地图 API 绘制折线 description: "想要在百度地图上画一条自定义路线,路线说白了就是折线,使用百度地图 JS API 画折线可以使用 Polyline 类来实现。" date: 2015-08-23 21:00:00 +0800 category: tech thumb: 'IMG_PATH/bmaps.png' tags: ['百度地图 API', 折线, 路线, JavaScript, 潮汕] --- * toc {:toc} 想要在百度地图上画一条自定义路线,路线说白了就是折线,使用百度地图 JS API 画折线可以使用 Polyline 类来实现。 ## 获取密钥 首先在 [百度开放服务平台](http://developer.baidu.com/) 注册百度开发者帐号(可以使用百度帐号直接登录)。 然后在 [百度地图 LBS 开放平台](http://lbsyun.baidu.com/apiconsole/key) 创建应用。 根据所需要的设置并提交,便可以看到访问密钥 ak(AccessKey)。 ## 创建地图 无论使用百度地图 API 做什么,首先都得显示地图,除去乱七八糟的东西,显示地图最主要的是中心点坐标以及缩放级别。 以上可以通过 Map 类的 centerAndZoom 方法来实现,关于 Map 类具体可参考:[Map 类](http://developer.baidu.com/map/reference/index.php?title=Class:%E6%A0%B8%E5%BF%83%E7%B1%BB/Map)。 下面以潮汕为例,显示一个地图,除却 JS 代码,还需要设置地图所在 `DIV` 的宽高。 {% highlight javascript %}
{% endhighlight %} {% include media.html type="iframe" src="IMG_PATH/bmaps-polyline.html?id=1" %} ## 创建坐标点 其实这个在上面已经有过实例,点一般由经度和纬度确定。百度地图使用 Point 类实现,具体可看:[Point 类](http://developer.baidu.com/map/reference/index.php?title=Class:%E5%9F%BA%E7%A1%80%E7%B1%BB/Point)。 创建一个坐标点只需要指定一个经度及一个纬度即可,例如: {% highlight javascript %} var point = new BMap.Point(116.43,23.4); {% endhighlight %} ## 绘制折线 开头说到,百度地图的折线可以由 Polyline 类来实现,Polyline 类的具体文档可以看:[Polyline 类](http://developer.baidu.com/map/reference/index.php?title=Class:%E8%A6%86%E7%9B%96%E7%89%A9%E7%B1%BB/Polyline)。 折线有若干个折点,所以不可避免的要设置这些坐标点。根据文档,创建折线对象需要设置点的数组。折线属于覆盖物,需要用到 Map 类的 addOverlay 方法将其覆盖到地图上。 下面以横穿潮汕大地的杭深线为例,获取坐标点可以使用 Google Earth 绘制路径,导出 KML 文件后使用百度坐标转换 API 进行批量转换。具体可参考这篇:[百度地图坐标转换](/bmaps-changeposition.html)。 ![Google Earth 上的路径]({{ site.IMG_PATH }}/bmaps-polyline.png?imageView2/2/w/640) Google Earth 上的路径 {% highlight javascript %}
{% endhighlight %} {% include media.html type="iframe" src="IMG_PATH/bmaps-polyline.html?id=2" %} 本文仅仅介绍使用百度地图 API 如何创建折线,若想制作更多更有趣的地图,还请参考百度地图 [JavaScript API 文档](http://developer.baidu.com/map/index.php?title=jspopular)。 **本文历史** * 2015 年 08 月 23 日 完成初稿