下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

1.2 百度地图接口调用

1.2.1 百度地图API简介

百度地图API是一套为开发者免费提供的基于百度地图的应用程序接口,包括JavaScript、iOS、Andriod、静态地图、Web服务等多种版本,提供基本地图、位置搜索、周边搜索、公交驾车导航、定位服务、地理编码及逆地理编码等丰富功能。LBS云是百度地图针对LBS开发者全新推出的平台级服务。通过地图API,一方面解决移动开发者服务器端日益增长的海量位置数据的存储维护压力,另一方面彻底解决所有LBS开发者基于位置数据的高并发检索瓶颈。

由于我们主要以开发web应用为主,所以学习JavaScriptAPI的使用就可以了。

1.2.2 百度地图JavaScript API简介

百度地图JavaScript API是一套由JavaScript语言编写的应用程序接口,可帮助您在网站中构建功能丰富、交互性强的地图应用,支持PC端和移动端基于浏览器的地图应用开发,且支持HTML5 特性的地图开发。

百度地图JavaScript API支持HTTP和HTTPS,免费对外开放,可直接使用。接口使用无次数限制。在使用前,您需先申请密钥(ak)才可使用。在您使用百度地图JavaScript API之前,请先阅读百度地图API使用条款。任何非营利性应用请直接使用,商业应用请参考使用须知,现已更新到v3.0。

注意: JavaScript API v3.0 是在 v2.0 的基础上进行开发的,并针对 2.0 的一些接口进行了升级,为开发者提供更完善的服务。v3.0 的绝大部分接口向下兼容,开发者仅需要修改版本参数(v=3.0)就可以切换到JavaScript API v3.0 版本,具体版本差异请参考服务版本说明书。

1.2.3 百度地图API调用基础

百度地图API使用流程,如图1.1 所示。

图1.1 百度地图API使用流程

1. ak申请

JavaScript API只支持浏览器类型的ak(自 2016 年 1 月 15 日升级)。请开发者在申请ak时注意选择,如图1.2 所示。

图1.2 申请ak

2. 移动平台上的地图应用开发

JavaScript API支持iPhone、Android这样的移动平台。用户通过手机浏览器就可以访问由地图API创建出来的应用。移动平台的屏幕尺寸通常比PC或笔记本要小,操作方式也有所不同。为了更好地在手机浏览器上展示地图,我们有如下建议:

将地图容器高设置为 100%,使其充满整个屏幕,或者您也可以计算浏览器窗口的大小并进行设置,如图1.3 所示。

图1.3 全屏地图示例

添加下面的meta标签:<meta name="viewport" content="initial-scale=1.0,user-scalable=no" /> 这样做是为了让页面以正常比例进行显示并且禁止用户缩放页面的操作。

3. 异步加载

JavaScript API支持异步加载,您可以在引用脚本的时候添加callback参数,当脚本加载完成后callback函数会被立刻调用。请参考下面的使用示例:

4. 兼容性

浏览器:IE 6.0+、Firefox 3.6+、Opera 9.0+、Safari 3.0+、Chrome

操作系统:Windows、Mac、Linux

移动平台:iPhone、Android

1.2.4 创建地图

1. 展示地图

展示以重庆人民大礼堂为中心的地图,如图1.4 所示。

图1.4 展示地图中心

(1)编写HTML页面的基础代码

在这一步我们完成头部文件和地图容器样式的编写,让地图容器充满网页。

(2)引入百度地图API文件

(3)初始化地图逻辑

首先创建地图实例,之后用一个Point坐标点和缩放级别来初始化地图。

(4)开启鼠标滚轮缩放

地图的鼠标滚轮缩放默认是关闭的,需要配置开启。

至此,我们完成了一个更加完整的地图展示的例子。

提示: 上面步骤第 3 步的坐标点可以用百度地图坐标拾取系统获取。

2. 添加控件

百度地图上负责与地图交互的UI元素称为控件。百度地图API中提供了丰富的控件,可以通过Control类来实现自定义控件,如图1.5 所示。

图1.5 地图控件

地图控件介绍见表1.1。

表1.1 地图控件介绍

3. 向地图添加控件

可以使用Map.addControl()方法向地图添加控件。

(1)地图初始化

添加控件前,地图需要进行初始化。例如,要将标准地图控件添加到地图中,可在代码中添加如下内容:

(2)添加多个控件

在本例中我们向地图添加一个平移缩放控件、一个比例尺控件和一个缩略图控件。在地图中添加控件后,它们即刻生效。

4. 控制控件位置

初始化控件时,可提供一个可选参数,其中的anchor和offset属性共同控制控件在地图上的位置。anchor表示控件的停靠位置,即控件停靠在地图的哪个角。当地图尺寸发生变化时,控件会根据停靠位置的不同来调整自己的位置,见表1.2。

表1.2

5. 控件位置偏移

除了指定停靠位置外,还可以通过偏移量来指示控件距离地图边界有多少像素。如果两个控件的停靠位置相同,那么控件可能会重叠在一起,这时就可以通过偏移值使二者分开显示。

如下示例为:将比例尺放置在地图的左下角,由于API默认会有版权信息,因此需要添加一些偏移值以防止控件重叠。

6. 修改控件配置

地图API的控件提供了丰富的配置参数,您可参考API文档来修改它们以便得到符合要求的控件外观。例如,NavigationControl控件就提供了如下类型,见表1.3。

表1.3

下图从左向右依次展示了上述不同类型的控件外观,前四个为PC端平移缩放控件样式,最后一个为移动端缩放控件样式,如图1.6 所示。

图1.6 地图控件外观示例

如下示例为:将调整平移缩放地图控件的外观。

7. 自定义控件

百度地图API允许您通过继承Control来创建自定义地图控件。

(1)定义一个自定义控件的构造函数并继承Control

您需要定义自定义控件的构造函数,并在构造函数中提供defaultAnchor和defaultOffset两个属性,以便API正确定位控件位置,接着让其继承Control。在下面的示例中我们定义一个名为ZoomControl的控件,每一次点击将地图放大两个级别。它具有文本标识,而不是平移缩放控件中使用的图形图标。

(2)初始化自定义控件

设置自定义控件构造函数的prototype属性为Control的实例,以便继承控件基类。

当调用map.addControl()方法添加自定义控件时,API会调用该对象的initialize()方法用来初始化控件,您需要实现此方法并在其中创建控件所需的DOM元素,然后添加DOM事件。所有自定义控件中的DOM元素最终都应该添加到地图容器(即地图所在的DOM元素)中去,地图容器可以通过map.getContainer()方法获得。最后initialize()方法需要返回控件容器的DOM元素。

(3)添加自定义控件

添加自定义控件与添加其他控件方法一致,调用map.addControl()方法即可。

8. 个性化地图

个性地图支持用户使用JavaScript API设置地图底图的样式风格以及控制组成地图底图的元素类的显示和隐藏。创建满足用户特定需求的与众不同的地图,如通过隐藏某类地图元素,突出展示自己的数据。个性化定制功能适用于pc端和手机端全部现代浏览器(支持HTML5,Canvas),同时可在百度地图Android/iOS SDK中复用样式,一次编辑多端共用。

通过个性化地图编辑平台,自行编辑地图展示样式,生成地图样式json,然后通过JavaScriptAPI V3.0 的setMapStyleV2 方法调用生效(注意:新版编辑平台输出的样式json,需使用对应的setMapStyleV2 方法)。

深夜版地图效果如图1.7 所示。

图1.7 深夜版地图效果

定制方式一:模板选择方式

模板方式简单好用,初学者可选用这种方式。

(1)选择模板

目前开放平台为用户提供多种不同风格的模板,在个性化地图编辑平台中,开发者可直接选择感兴趣的模板,或在此基础上进行二次编辑和应用。

模板示意图如图1.8 所示。

图1.8 模板示意图

(2)设置地图样式

完成编辑后,下载或复制样式json。

将setMapStyleV2 方法中的styleJson替换为开发者编辑好的样式json,将地图样式设置为“眼眸”模板样式,设置后地图效果如图1.9 所示。

图1.9 设置后效果

定制方式二:个性化编辑方式

该方式是指开发者可以借助个性化地图编辑平台,直接按照业务和场景需求,改变地图元素的颜色、文本标注填充色、文本标注等样式,生成样式配置json(当然,您也可以在模板基础上进行操作),然后通过调用JavaScriptAPI V3.0 中setMapStyleV2方法配置生效。

操作页面截图如图1.10 所示。

图1.10 操作页面截图

使用步骤如下:

(1)选择元素

在地图元素模块,选择要修改的地图元素。目前可以修改的地图元素包括如下 4 大类,合计 41 类地图元素,如图1.11 所示。

图1.11 地图元素 4 大类

地图元素类说明见表1.4。

表1.4

(2)选择需要修改的元素样式

选择好要修改的地图元素后,修改元素对应的地图样式,不同地图元素支持修改的样式内容不同,如道路元素,支持修改的样式有填充色、文本颜色、道路宽度等,如图1.12所示。

图1.12 地理元素样式

(3)设置样式

按业务和场景需求,设置元素样式。将道路设置为红色,如图1.13 所示。

图1.13 设置元素样式

(4)将编辑好的样式JSON应用在自己的网站上

要将编辑后的地图样式应用到自己的网站上,需要先查看json获取样式代码,如图1.14 所示。

图1.14 获取样式json

1.2.5 定位

JavaScript API提供在Web端获取当前位置信息的方法,融合了浏览器定位、IP定位、安卓定位SDK辅助定位等多种手段,提供了获取当前准确位置、获取当前城市信息等功能。

浏览器定位精度依赖浏览器自身特性,IP定位的精度值为城市级别,见表1.5。

注意:

➢请求JavaScript API v3.0 的定位功能时,必须获取用户授权。

➢由于Chrome、iOS10 等已不再支持非安全域的浏览器定位请求,为保证定位成功率和精度,请尽快升级您的站点到HTTPS。

表1.5

定位方法代码示例:

(1)浏览器定位

(2)IP定位

(3)定位SDK辅助定位

注意: 百度地图提供的功能远不止前面部分讲述的这么点,除了百度地图以外,还有高德地图也提供了相应的功能。大家在实际使用时要多看官方手册。 11TXdjs3ewHWLJa+i2JreW8agiNfi3ZAV36xes6i3wE1CWBA8PlW5mBb+jwjbodG

点击中间区域
呼出菜单
上一章
目录
下一章
×