Skip to content

Latest commit

 

History

History
4189 lines (2959 loc) · 81.6 KB

README.md

File metadata and controls

4189 lines (2959 loc) · 81.6 KB

#概述

百度地图模块源码(含iOS和Android)

APICloud 的 bMap 模块是对百度地图移动端开放 SDK 进行的一次封装。目的是为了让 APICloud 的广大开发者只需用 html+js 即可快速、高效的集成百度移动端地图到自己的 App 内。所以需在百度开放平台提供的 SDK 基础上,按照 APICloud 平台的模块开发规范,对百度地图的 SDK 提供的接口进行一层封装。本模块只对百度地图的常用接口进行了封装,其中涉及到 UI 的部分功能无法完全彻底的封装。因此开源此模块源码,原生开发者可以在此模块的基础上继续完善该模块的其它接口。比如扩展地图上添加自定义气泡的接口,让前端开发者很快地在 APICloud 上开发出各式各样、效果炫酷的 App。

#模块接口文档

##基础类

##标注、气泡类

##覆盖物类

##搜索类

##离线地图类

#模块概述

bMap 模块封装了百度地图的原生 SDK,集成了百度地图常用基本接口;手机版原生地图,不同于 js 地图,相对于js地图而言,本模块封装的原生手机地图更加流畅迅速、动画效果更加逼真。使用此模块可轻松把百度地图集成到自己的app内,实现百度地图常用的定位、关键字搜索、周边搜索、自定义标注及气泡、查公交路线等各种功能;另外本模块已支持百度地图离线版本。

若某些带UI的接口不能满足开发设计需求,开发者(借助于原生开发者)可在本模块基础上修改少量原生代码,随心所欲的自定义百度地图所具有的原生功能,简单、轻松、快捷、高效、迅速集成百度地图,将自己的 app 和百度地图实现无缝链接。模块原生代码开源地址为:https://github.com/apicloudcom/bMap

模块使用攻略

注意事项

  • 本模块内带动画效果的接口不可同时调用(两个以上),需要设置延迟(setTimeout)处理。
  • bMap 模块是 baiduMap 模块的优化版。不可与baiduMap、baiduLocation模块同时使用
  • 使用本模块需云编译安装包,或以自定义 loader 的形式使用
  • 离线地图功能属于“基础地图”这个功能模块,开发者使用时请注意选择

使用此模块之前必须先配置 config 文件,配置方法如下:

  • 名称:bMap
  • 参数:android_api_key、ios_api_key
  • 备注:同一个 App 需要同时支持 iOS 和 Android 平台,必须单独申请各自的 apiKey,并同时配置在 config 文件中
  • 配置示例:
  <feature name="bMap">
    <param name="android_api_key" value="f7Is0dWLom2q6rV3ZfFPZ1aa" />
    <param name="ios_api_key" value="81qz3dBYB5q2nGji4IYrawr1" />
  </feature>
  • 字段描述:

    android_api_key:在百度地图开放平台申请的 Android 端 AK

    ios_api_key:在百度地图开放平台申请的 IOS 端 AK

##模块接口

#open

打开百度地图

open({params}, callback(ret, err))

##params

rect:

  • 类型:JSON对象
  • 描述:(可选项)模块的位置及尺寸
  • 内部字段:
{
    x: 0,   //(可选项)数字类型;地图左上角的 x 坐标(相对于所属的 Window 或 Frame);默认:0
    y: 0,   //(可选项)数字类型;地图左上角的 y 坐标(相对于所属的 Window 或 Frame);默认:0
    w: 320, //(可选项)数字类型;地图的宽度;默认:所属的 Window 或 Frame 的宽度
    h: 480  //(可选项)数字类型;地图的高度;默认:所属的 Window 或 Frame 的高度
}

center:

  • 类型:数字
  • 描述:(可选项)打开地图时设置的中心点经纬度,若不传则默认打开北京市为中心的地图
  • 内部字段:
{
    lon: 116.213,       //数字类型;打开地图时设置的中心点经度
    lat: 39.213         //数字类型;打开地图时设置的中心点纬度
}

zoomLevel:

  • 类型:数字
  • 描述:(可选项)设置百度地图缩放等级,取值范围:3-18级
  • 默认值:10

showUserLocation:

  • 类型:布尔
  • 描述:(可选项)是否在地图上显示用户位置
  • 默认值:true

fixedOn:

  • 类型:字符串类型
  • 描述:(可选项)模块视图添加到指定 frame 的名字(只指 frame,传 window 无效)
  • 默认:模块依附于当前 window

fixed:

  • 类型:布尔
  • 描述:(可选项)模块是否随所属 Window 或 Frame 滚动
  • 默认值:true(不随之滚动)

##callback(ret)

ret:

  • 类型:JSON对象
  • 内部字段:
{
    status: true	 //布尔型;true||false
}

##示例代码

var map = api.require('bMap');
map.open({
    rect: {
        x: 0,
        y: 0,
        w: 320,
        h: 300
    },
    center: {
        lon: 116.4021310000,
        lat: 39.9994480000
    },
	zoomLevel: 10,
    showUserLocation: true,
    fixedOn: api.frameName,
    fixed: true
}, function(ret){
	if(ret.status){
        alert('地图打开成功');
	}
});

##可用性

iOS系统,Android系统

可提供的1.0.0及更高版本

#close

关闭百度地图

close()

##示例代码

var map = api.require('bMap');
map.close();

##可用性

iOS系统,Android系统

可提供的1.0.0及更高版本

#show

显示百度地图

show()

##示例代码

var map = api.require('bMap');
map.show();

##可用性

iOS系统,Android系统

可提供的1.0.0及更高版本

#hide

隐藏百度地图

hide()

##示例代码

var map = api.require('bMap');
map.hide();

##可用性

iOS系统,Android系统

可提供的1.0.0及更高版本

#setRect

重设地图的显示区域

setRect({params})

##params

rect:

  • 类型:JSON对象
  • 描述:(可选项)模块的位置及尺寸
  • 内部字段:
{
    x: 0,   //(可选项)数字类型;地图左上角的 x 坐标(相对于所属的 Window 或 Frame);默认:原值
    y: 0,   //(可选项)数字类型;地图左上角的 y 坐标(相对于所属的 Window 或 Frame);默认:原值
    w: 320, //(可选项)数字类型;地图的宽度;默认:原值
    h: 480  //(可选项)数字类型;地图的高度;默认:原值
}

##示例代码

var map = api.require('bMap');
map.setRect({
    rect: {
        x: 0,
        y: 0,
        w: 320,
        h: 300
    }
});

##可用性

iOS系统,Android系统

可提供的1.0.0及更高版本

#getLocation

开始定位,若要支持后台定位需配置 config.xml 文件 location 字段无需调用 open 接口即可定位

getLocation({params}, callback(ret, err))

##params

accuracy:

  • 类型:字符串
  • 描述:(可选项)定位精度
  • 默认值:'100m'
  • 取值范围:
    • 10m
    • 100m
    • 1km
    • 3km

autoStop:

  • 类型:布尔
  • 描述:(可选项)获取到位置信息后是否自动停止定位
  • 默认值:true

filter:

  • 类型:数字
  • 描述:(可选项)位置更新所需的最小距离(单位米),autoStop 为 true 时,此参数有效
  • 默认值:1.0

##callback(ret, err)

ret:

  • 类型:JSON对象
  • 内部字段:
{
    status: true,               //布尔型;true||false
    lon: 116.213,               //数字类型;经度
    lat: 39.213,                //数字类型;纬度
    timestamp: 1396068155591    //数字类型;时间戳
	locationType:netWork        //字符串;定位类型;GPS||NetWork||OffLine(仅限Android)
}

err:

  • 类型:JSON对象
  • 内部字段:
{
    code: 0,         //数字类型;错误码
    msg: ''          //字符串类型;错误信息说明
}

##示例代码

var bMap = api.require('bMap');
bMap.getLocation({
    accuracy: '100m',
    autoStop: true,
    filter: 1
}, function(ret, err){
    if(ret.status){
        alert(JSON.stringify(ret));
    }else{
        alert(err.code);
    }
});

##可用性

iOS系统,Android系统

可提供的1.0.0及更高版本

#stopLocation

停止定位

stopLocation()

##示例代码

var bMap = api.require('bMap');
bMap.stopLocation();

##可用性

iOS系统,Android系统

可提供的1.0.0及更高版本

#getCoordsFromName

根据地址查找经纬度,无需调用 open 接口即可使用

getCoordsFromName({params}, callback(ret, err))

##params

city:

  • 类型:字符串
  • 描述:地址所在城市

address:

  • 类型:字符串
  • 描述:地址信息

##callback(ret, err)

ret:

  • 类型:JSON对象
  • 内部字段:
{
    status: true,        //布尔型;true||false
    lon: 116.351,        //数字类型;地址所在经度
    lat: 39.283          //数字类型;地址所在纬度
}

err:

  • 类型:JSON对象
  • 内部字段:
{
    code: 1           //数字类型;错误码
                      //1(检索词有岐义)
                      //2(检索地址有岐义)
                      //3(没有找到检索结果)
                      //4(key错误)
                      //5(网络连接错误)
                      //6(网络连接超时)
                      //7(还未完成鉴权,请在鉴权通过后重试)
}

##示例代码

var map = api.require('bMap');
map.getCoordsFromName({
    city: '北京',
    address: '天安门'
},function(ret,err){
    if(ret.status){
       alert(JSON.stringify(ret));
    }
});

##可用性

iOS系统,Android系统

可提供的1.0.0及更高版本

#getNameFromCoords

根据经纬度查找地址信息,无需调用 open 接口即可使用

getNameFromCoords({params}, callback(ret, err))

##params

lon:

  • 类型:数字
  • 描述:经度

lat:

  • 类型:数字
  • 描述:纬度

##callback(ret, err)

ret:

  • 类型:JSON对象
  • 内部字段:
{
    status: true,              //布尔型;true||false
    lon: 116.351,              //数字类型;经度
    lat: 39.283,               //数字类型;纬度
    address: '',               //字符串类型;地址信息
    province: '',              //字符串类型;省份
    city: '',                  //字符串类型;城市
    district: '',              //字符串类型;县区
    streetName: '',            //字符串类型;街道名
    streetNumber: ''           //字符串类型;街道号
}

err:

  • 类型:JSON对象
  • 内部字段:
{
    code: 1           //数字类型;错误码
                      //1(检索词有岐义)
                      //2(检索地址有岐义)
                      //3(没有找到检索结果)
                      //4(key错误)
                      //5(网络连接错误)
                      //6(网络连接超时)
                      //7(还未完成鉴权,请在鉴权通过后重试)
}

##示例代码

var map = api.require('bMap');
map.getNameFromCoords({
    lon: 116.384767,
    lat: 39.989539
},function(ret,err){
    if(ret.status){
        alert(JSON.stringify(ret));
    }
});

##可用性

iOS系统,Android系统

可提供的1.0.0及更高版本

#getDistance

获取地图两点之间的距离,无需调用 open 接口即可使用

getDistance({params}, callback(ret, err))

##params

start:

  • 类型:JSON对象
  • 描述:起点经纬度
  • 内部字段:
{
    lon: 106.486654,    //数字类型;起点的经度
    lat: 29.490295      //数字类型;起点的纬度
}

end:

  • 类型:JSON对象
  • 描述:终点经纬度
  • 内部字段:
{
    lon: 106.581515,    //数字类型;终点的经度
    lat: 29.615467      //数字类型;终点的纬度
}

##callback(ret)

ret:

  • 类型:JSON对象
  • 内部字段:
{
    status: true,              //布尔型;true||false
    distance: 16670.90         //数字类型;两点之间的距离,单位:米
}

##示例代码

var map = api.require('bMap');
map.getDistance({
    start: {
        lon: 106.486654,
        lat: 29.490295
    },
    end: {
        lon: 106.581515,
        lat: 29.615467
    }
},function(ret){
    if(ret.status){
        alert(ret.distance);
    }
});

##可用性

iOS系统,Android系统

可提供的1.0.0及更高版本

#showUserLocation

是否在地图上显示用户位置,会自动移动地图可视区域中心点到用户当前坐标位置,自带地图移动动画效果

showUserLocation({params})

##params

isShow:

  • 类型:布尔
  • 描述:(可选项)是否显示用户位置
  • 默认值:true

trackingMode:

  • 类型:字符串
  • 描述:(可选项)用户当前位置显示形式
  • 默认值:none
  • 取值范围:
    • none(标准模式)
    • follow(跟踪模式)
    • compass(罗盘模式)

##示例代码

var map = api.require('bMap');
map.showUserLocation({
    isShow: true,
    trackingMode: 'none'
});

##可用性

iOS系统,Android系统

可提供的1.0.0及更高版本

#setCenter

根据经纬度设置百度地图中心点,此接口可带动画效果

setCenter({params})

##params

coords:

  • 类型:JSON对象
  • 描述:中心点的经纬度
  • 内部字段:
{
    lon: 116.404,       //数字类型;设置中心点的经度
    lat: 39.915         //数字类型;设置中心点的纬度
}

animation:

  • 类型:布尔类型
  • 描述:(可选项)设置地图的中心点时,是否带动画效果
  • 默认:true

##示例代码

var map = api.require('bMap');
map.setCenter({
    coords: {
        lon: 116.404,
        lat: 39.915
    },
    animation:false
});

##可用性

iOS系统,Android系统

可提供的1.0.0及更高版本

#getCenter

获取百度地图中心点坐标

getCenter(callback(ret))

##callback(ret)

ret:

  • 类型:JSON对象
  • 内部字段:
{
    lon: 116.404,       //数字类型;地图中心点的经度
    lat: 39.915         //数字类型;地图中心点的纬度
}

##示例代码

var map = api.require('bMap');
map.getCenter(function(ret){
   alert(ret.lon+'*'+ret.lat);
});

##可用性

iOS系统,Android系统

可提供的1.0.0及更高版本

#setZoomLevel

设置百度地图缩放等级,此接口自带动画效果

setZoomLevel({params})

##params

level:

  • 类型:数字
  • 描述:(可选项)地图比例尺级别,取值范围:3-18级
  • 默认值:10

##示例代码

var map = api.require('bMap');
map.setZoomLevel({
    level: 10
});

##可用性

iOS系统,Android系统

可提供的1.0.0及更高版本

#setMapAttr

设置百度地图相关属性

setMapAttr({params})

##params

type:

  • 类型:字符串
  • 描述:(可选项)设置地图类型
  • 默认值:'standard'
  • 取值范围:
    • standard(标准地图)
    • trafficOn(打开实时路况)
    • trafAndsate(实时路况和卫星地图)
    • satellite(卫星地图)

zoomEnable:

  • 类型:布尔
  • 描述:(可选项)捏合手势是否可以缩放地图
  • 默认值:true

scrollEnable:

  • 类型:布尔
  • 描述:(可选项)拖动手势是否可以移动地图
  • 默认值:ture

##示例代码

var map = api.require('bMap');
map.setMapAttr({
    type: 'standard'
});

##可用性

iOS系统,Android系统

可提供的1.0.0及更高版本

#setRotation

设置百度地图旋转角度,此接口自带动画效果

setRotation({params})

##params

degree:

  • 类型:数字
  • 描述:(可选项)地图旋转角度,取值范围:-180° - 180°
  • 默认值:0

##示例代码

var map = api.require('bMap');
map.setRotation({
    degree: 30
});

##可用性

iOS系统,Android系统

可提供的1.0.0及更高版本

#setOverlook

设置百度地图俯视角度,此接口自带动画效果

setOverlook({params})

##params

degree:

  • 类型:数字
  • 描述:(可选项)地图俯视角度,取值范围:-45° - 0°
  • 默认值:0

##示例代码

var map = api.require('bMap');
map.setOverlook({
    degree: -30
});

##可用性

iOS系统,Android系统

可提供的1.0.0及更高版本

#setScaleBar

设置百度地图比例尺

setScaleBar({params})

##params

show:

  • 类型:布尔
  • 描述:(可选项)是否显示比例尺
  • 默认值:false

position:

  • 类型:JSON对象
  • 描述:(可选项)比例尺的位置,设定坐标以地图左上角为原点
  • 内部字段:
{ 
    x: 0,   //(可选项)数字类型;比例尺左上角的 x 坐标(相对于地图);默认:0
    y: 0    //(可选项)数字类型;比例尺左上角的 y 坐标(相对于地图);默认:0
}

##示例代码

var map = api.require('bMap');
map.setScaleBar({
    show: true,
    position: {
      x:100,
      y:100
    }
});

##可用性

iOS系统,Android系统

可提供的1.0.0及更高版本

#setCompass

设置百度地图指南针位置,只有地图旋转或视角变化时才显示指南针

setCompass({params})

##params

position:

  • 类型:JSON对象
  • 描述:(可选项)指南针的位置,设定坐标以地图左上角为原点
  • 内部字段:
{ 
    x: 0,   //(可选项)数字类型;指南针左上角的 x 坐标(相对于地图);默认:0
    y: 0    //(可选项)数字类型;指南针左上角的 y 坐标(相对于地图);默认:0
}

##示例代码

var map = api.require('bMap');
map.setCompass({
    position: {
      x:100,
      y:100
    }
});

##可用性

iOS系统,Android系统

可提供的1.0.0及更高版本

#setTraffic

设置百度地图交通路况

setTraffic({params})

##params

traffic:

  • 类型:布尔
  • 描述:(可选项)是否显示交通路况
  • 默认值:true

##示例代码

var map = api.require('bMap');
map.setTraffic({
    traffic: true
});

##可用性

iOS系统,Android系统

可提供的1.0.0及更高版本

#setHeatMap

设置百度地图城市热力图

setHeatMap({params})

##params

heatMap:

  • 类型:布尔
  • 描述:(可选项)是否显示城市热力图
  • 默认值:true

##示例代码

var map = api.require('bMap');
map.setHeatMap({
    heatMap: true
});

##可用性

iOS系统,Android系统

可提供的1.0.0及更高版本

#setBuilding

设定地图是否现实 3D 楼块效果,地图放大,才会有 3D 楼快效果,倾斜视角 3D 效果会更明显

setBuilding({params})

##params

building:

  • 类型:布尔
  • 描述:(可选项)是否现实3D楼块效果
  • 默认值:true

##示例代码

var map = api.require('bMap');
map.setBuilding({
    building: true
});

##可用性

iOS系统,Android系统

可提供的1.0.0及更高版本

#setRegion

设置地图显示范围(矩形区域),此接口可带动画效果

setRegion({params})

##params

lbLon:

  • 类型:数字
  • 描述:矩形区域左下角的经度

lbLat:

  • 类型:数字
  • 描述:矩形区域左下角的纬度

rtLon:

  • 类型:数字
  • 描述:矩形区域右上角的经度

rtLat:

  • 类型:数字
  • 描述:矩形区域右上角的纬度

animation:

  • 类型:布尔类型
  • 描述:(可选项)设置地图的区域时,是否带动画效果
  • 默认:true

##示例代码

var map = api.require('bMap');
map.setRegion({
    lbLon: 116.027143, 
    lbLat: 39.772348, 
    rtLon: 116.832025, 
    rtLat: 40.126349,
    animation: true
});

##可用性

iOS系统,Android系统

可提供的1.0.0及更高版本

#getRegion

获取地图显示范围(矩形区域)

getRegion(callback(ret))

##callback

ret:

  • 类型:JSON对象
  • 内部字段:
{
    status: true,                //布尔型;true||false
    lbLon: 116.027143,           //数字类型;矩形区域左下角的经度
    lbLat: 39.772348,            //数字类型;矩形区域左下角的纬度
    rtLon: 116.832025,           //数字类型;矩形区域右上角的经度
    rtLat: 40.126349             //数字类型;矩形区域右上角的纬度    
}

##示例代码

var map = api.require('bMap');
map.getRegion(function(ret){
    if(ret.status){
        alert(JSON.stringify(ret));
    }
});

##可用性

iOS系统,Android系统

可提供的1.0.0及更高版本

#transCoords

将其它类型的地理坐标转换为百度坐标。无需调用 open 接口即可使用

transCoords({params}, callback(ret, err))

##params

type:

  • 类型:字符串
  • 描述:原始地理坐标类型
  • 默认值:common
  • 取值范围:
    • gps(GPS设备采集的原始GPS坐标)
    • common(google、soso、aliyun、mapabc、amap和高德地图所用坐标)

lon:

  • 类型:数字
  • 描述:原始地理坐标经度

lat:

  • 类型:数字
  • 描述:原始地理坐标纬度

mcode:

  • 类型:字符串
  • 描述:到百度地图开放平台获取的安全码(Android端),点击应用的设置按钮 -> 设置界面 -> 安全码(数字签名+;+包名)

##callback(ret, err)

ret:

  • 类型:JSON对象
  • 内部字段:
{
    status: true,  //布尔型;true||false
    lon: 116.213,  //数字类型;转换后的百度地理坐标经度
    lat: 39.213    //数字类型;转换后的百度地理坐标纬度
}

err:

  • 类型:JSON对象
  • 内部字段:
{
    code: 1         //数字类型;错误码
                    //1:(参数非法)
                    //2:(转换失败)
}

##示例代码

var map = api.require('bMap');
map.transCoords({
    type: "common",
    lon: 116.351,
    lat: 39.283,
    mcode: '0B:13:25:D7:85:46:0A:67:12:F3:29:88:64:56:63:10:7A:9C:C4:59;com.apicloud.A6985734480360'
}, function(ret, err){
    alert(JSON.stringify(ret));
});

##可用性

iOS系统,Android系统

可提供的1.0.0及更高版本

#zoomIn

缩小地图,放大视角,放大一级比例尺,此接口自带动画效果

zoomIn()

##示例代码

var map = api.require('bMap');
map.zoomIn();

##可用性

iOS系统,Android系统

可提供的1.0.0及更高版本

#zoomOut

放大地图,缩小视角,缩小一级比例尺,此接口自带动画效果

zoomOut()

##示例代码

var map = api.require('bMap');
map.zoomOut();

##可用性

iOS系统,Android系统

可提供的1.0.0及更高版本

#addEventListener

监听地图相关事件

addEventListener({params}, callback(ret, err))

##params

name:

  • 类型:字符串
  • 描述:地图相关事件名称
  • 取值范围:
    • longPress(长按事件)
    • viewChange(地图视角范围改变事件)
    • click(单击事件)
    • dbclick(双击事件)

##callback(ret)

ret:

  • 类型:JSON对象
  • 内部字段:
{
    status: true,           //布尔型;true||false
    lon: 116.351,           //数字类型;触发事件的地点的经度(longPress,click,dbclick),地图中心的经度(viewChange)
    lat: 39.283,            //数字类型;触发事件的地点的纬度(longPress,click,dbclick),地图中心的经度(viewChange)
    zoom: 30,               //数字类型;地图缩放角度
    rotate: 30,             //数字类型;地图旋转角度
    overlook: 30            //数字类型;视角倾斜度
}

##示例代码

var map = api.require('bMap');
map.addEventListener({
    name: 'longPress'
},function(ret){
    if(ret.status){
        alert(JSON.stringify(ret));
    }
});

##可用性

iOS系统,Android系统

可提供的1.0.0及更高版本

#isPolygonContantsPoint

判断已知点是否在指定的多边形区域内

isPolygonContantsPoint({params}, callback(ret))

##params

point:

  • 类型:JSON对象
  • 描述:已知点的地理坐标
  • 内部字段:
{
    lon: 116.297,      //数字类型;经度
    lat: 40.109        //数字类型;纬度
}

points:

  • 类型:数组
  • 描述:多边形的各个点组成的数组
  • 内部字段:
[{
    lon: 116.297,      //数字类型;经度
    lat: 40.109        //数字类型;纬度
}]

##callBack

ret:

  • 类型:JSON对象
  • 内部字段:
{
    status: true      //布尔类型;目标点是否在指定区域内,true || false      
}

##示例代码

var map = api.require('bMap');
map.isPolygonContantsPoint({
    point: {
	     lon:116.39432327,
	     lat:39.98963192
	 },
	 points: [{
	     lon:116.39432327,
	     lat:39.98963192
	 },{
	     lon: 116.49432328,
	     lat: 39.98963192
	 },{
	     lon: 116.39432327,
	     lat: 39.88933191
	 }]
},function(ret){
     alert(ret.status);
});

##可用性

iOS系统,Android系统

可提供的1.0.0及更高版本

#removeEventListener

停止监听地图相关事件

removeEventListener({params})

##params

name:

  • 类型:字符串
  • 描述:地图相关事件名称
  • 取值范围:
    • longPress(长按事件)
    • viewChange(地图视角范围改变事件)
    • click(单击事件)
    • dbclick(双击事件)

##示例代码

var map = api.require('bMap');
map.removeEventListener({
    name: 'longPress'
});

##可用性

iOS系统,Android系统

可提供的1.0.0及更高版本

#startSearchGPS

开始搜索GPS信息(卫星个数,以及每个卫星的信噪比数组),本接口仅支持 android 平台

startSearchGPS(callback(ret))

##callBack

ret:

  • 类型:JSON对象
  • 内部字段:
{
    status: true,         //布尔类型;true || false,为false时可能是未开启GPS
	satelliteCount: 3,    //数字类型; 当前能搜索到的卫星数
	snrArray: [20,30,23]  //数组类型;各个卫星的信噪比 
}

##示例代码

var map = api.require('bMap');
map.startSearchGPS(
	function(ret){
		if(ret.status){
			alert(ret.satelliteCount);
		}
	}
);

##可用性

Android系统

可提供的1.0.0及更高版本

#stopSearchGPS

停止搜索GPS信息,本接口仅支持 android 平台

stopSearchGPS()

##示例代码

var map = api.require('bMap');
map.stopSearchGPS();

##可用性

Android系统

可提供的1.0.0及更高版本

#addAnnotations

在地图上添加标注信息

addAnnotations({params}, callback(ret))

##params

annotations:

  • 类型:数组
  • 描述:图标标注信息组成的数组
  • 内部字段:
[{
    id: 1,                     //数字类型;图标标注的唯一标识
    lon: 116.233,              //数字类型;图标标注所在位置的经度
    lat: 39.134,               //数字类型;图标标注所在位置的纬度
    icon: 'widget://',         //(可选项)字符串类型;指定的标注图标,要求本地路径(fs://,widget://),若不传则显示公用的 icon 图标
    draggable: true            //(可选项)布尔类型;所添加的标注是否可被拖动,若不传则以公用的 draggable 为准
}]

icon:

  • 类型:字符串
  • 描述:(可选项)公用的标注图标,要求本地路径(fs://,widget://)
  • 默认值:红色大头针

draggable:

  • 类型:布尔
  • 描述:(可选项)所添加的标注是否可被拖动
  • 默认值:false

##callback(ret)

ret:

  • 类型:JSON对象
  • 内部字段:
{
    id: 10      //数字类型;相应事件的标注的
    eventType: 'clickContent',   //字符串类型;交互事件类型
                                //取值范围:
                                //click(用户点击标注事件)
                                //drag(用户拖动标注事件)
    dragState: 'starting'       //字符串类型;标注被拖动的状态,当 eventType 为 drag 时本字段有值,
                                //取值范围:
                                //starting(开始拖动)
                                //dragging (拖动中)
                                //ending (拖动结束)
}

##示例代码

var map = api.require('bMap');
map.addAnnotations({
    annotations: [{
        id: 1, lon: 116.297, lat: 40.109
    },
    {
        id: 2, lon: 116.29, lat: 40.109
    },
    {
        id: 3, lon: 116.298, lat: 40.11
    }],
    icon: 'widget://',
    draggable: true
}, function(ret){
    if(ret){
        alert(ret.id);
    }
});

##可用性

iOS系统,Android系统

可提供的1.0.0及更高版本

#getAnnotationCoords

获取指定标注的经纬度

getAnnotationCoords({params}, callback(ret))

##params

id:

  • 类型:数字
  • 描述:指定的标注 id

##callback(ret)

ret:

  • 类型:JSON对象
  • 内部字段:
{
    lon: 116.213,      //数字类型;标注的经度
    lat: 39.213        //数字类型;标注的纬度
}

##示例代码

var map = api.require('bMap');
map.getAnnotationCoords({
    id: 2
}, function(ret){
    if(ret){
        api.alert({msg:JSON.stringify(ret)});
    }
});

##可用性

iOS系统,Android系统

可提供的1.0.0及更高版本

#setAnnotationCoords

设置某个已添加标注的经纬度

setAnnotationCoords(callback(ret))

##params

id:

  • 类型:数字
  • 描述:指定的标注 id

lon:

  • 类型:数字
  • 描述:设置的经度

lat:

  • 类型:数字
  • 描述:设置的纬度

##示例代码

var map = api.require('bMap');
map.setAnnotationCoords({
    id: 2,
    lon: 116.39,
    lat: 40.209
});

##可用性

iOS系统,Android系统

可提供的1.0.0及更高版本

#annotationExist

判断标注是否存在

annotationExist({params}, callback(ret))

##params

id:

  • 类型:数字
  • 描述:指定的标注 id

##callback(ret)

ret:

  • 类型:JSON对象
  • 内部字段:
{
    status: true      //布尔类型;标注是否存在,true || false
}

##示例代码

var map = api.require('bMap');
map. annotationExist({
    id: 2
}, function(ret){
    if(ret.status){
        api.alert({msg:'存在'});
    }
});

##可用性

iOS系统,Android系统

可提供的1.0.0及更高版本

#setBubble

设置点击标注时弹出的气泡信息

setBubble({params}, callback(ret))

##params

id:

  • 类型:数字
  • 描述:要设置气泡的标注 id

bgImg:

  • 类型:字符串
  • 描述:(可选项)弹出气泡的背景图片(160*90规格),要求本地路径(fs://,widget://)
  • 默认值:默认气泡样式

content:

  • 类型:JSON对象
  • 描述:弹出气泡的内容
  • 内部字段:
{
    title: '',             //字符串类型;弹出气泡的标题
    subTitle: '',          //(可选项)字符串类型;弹出气泡的概述内容,若不传则 title 在上下位置居中显示
    illus: ''              //(可选项)字符串类型;弹出气泡的配图(30*40规格),支持http://、https://、widget://、fs://等协议
}

styles:

  • 类型:JSON对象
  • 描述:弹出气泡的样式
  • 内部字段:
{
    titleColor: '#000',             //(可选项)字符串类型;气泡标题的文字颜色,支持rgb、rgba、#;默认:'#000'
    titleSize: 16,                  //(可选项)数字类型;气泡标题的文字大小;默认:16
    subTitleColor: '#000',          //(可选项)字符串类型;气泡概述内容的文字颜色,支持rgb、rgba、#;默认:'#000'
    subTitleSize: 14,               //(可选项)数字类型;气泡概述内容的文字大小;默认:14
    illusAlign: 'left'              //(可选项)字符串类型;气泡配图的显示位置;默认:'left'
                                    //取值范围:
                                    //left(图片居左)
                                    //right(图片居右)
}

##callback(ret, err)

ret:

  • 类型:JSON对象
  • 内部字段:
{
    id: 10,                     //数字类型;用户点击气泡返回的id
    eventType: 'clickContent',   //字符串类型;交互事件类型
                                //取值范围:
                                //clickContent(点击气泡文本内容)
                                //clickIllus(点击配图)
}

##示例代码

var map = api.require('bMap');
map.setBubble({
    id: 2,
    bgImg: 'widget://res/bubble_bg.png',
    content: {
        title: '大标题',
        subTitle: '概述内容',
        illus: 'http://ico.ooopic.com/ajax/iconpng/?id=145044.png'
    },
    styles: {
        titleColor: '#000',
        titleSize: 16,
        subTitleColor: '#999',
        subTitleSize: 12,
        illusAlign: 'left'
    }
}, function(ret){
    if(ret){
        alert(JSON.stringify(ret));
    }
});

##可用性

iOS系统,Android系统

可提供的1.0.0及更高版本

#popupBubble

弹出指定标注的气泡

popupBubble({params})

##params

id:

  • 类型:数字
  • 描述:气泡的 id

##示例代码

var map = api.require('bMap');
map.popupBubble({
    id: 2
});

##可用性

iOS系统,Android系统

可提供的1.0.0及更高版本

#addBillboard

在地图上添加布告牌

addBillboard({params})

##params

id:

  • 类型:数字
  • 描述:布告牌的 id,注意:本 id 不可与 addAnnotations 接口内的 id 相同

coords:

  • 类型:JSON对象
  • 描述:布告牌所在位置的坐标
  • 内部字段:
{
    lon: 116.233,            //数字类型;布告牌所在位置的经度
    lat: 39.134              //数字类型;布告牌所在位置的纬度
}

bgImg:

  • 类型:字符串
  • 描述:布告牌的背景图片(160*75规格),要求本地路径(fs://,widget://)

content:

  • 类型:JSON对象
  • 描述:布告牌的内容
  • 内部字段:
{
    title: '',             //(可选项)字符串类型;布告牌的标题
    subTitle: '',          //(可选项)字符串类型;布告牌的概述内容 
    illus: ''              //(可选项)字符串类型;布告牌的配图(35*50规格),支持http://、https://、widget://、fs://等协议
}

styles:

  • 类型:JSON对象
  • 描述:布告牌的样式
  • 内部字段:
{
    titleColor: '#000',             //(可选项)字符串类型;布告牌标题的文字颜色,支持rgb、rgba、#;默认:'#000'
    titleSize: 14,                  //(可选项)数字类型;布告牌标题的文字大小;默认:16
    subTitleColor: '#000',          //(可选项)字符串类型;布告牌概述内容的文字颜色,支持rgb、rgba、#;默认:'#000'
    subTitleSize: 12,               //(可选项)数字类型;布告牌概述内容的文字大小;默认:16
    illusAlign: 'left'              //(可选项)字符串类型;布告牌配图的显示位置;默认:'left'
                                    //取值范围:
                                    //left(图片居左)
                                    //right(图片居右)
}

##callback(ret, err)

ret:

  • 类型:JSON对象
  • 内部字段:
{
    id: 4,                     //数字类型;用户点击布告牌返回的id
}

##示例代码

var map = api.require('bMap');
map.addBillboard({
    id: 4,
    coords: {
        lon: 116.233,
        lat: 39.134
    },
    bgImg: 'widget://image/bMapTest.png',
    content: {
        title: '大标题大标题大标题大标题',
        subTitle: '概述内容概述内容概述内容',
        illus: 'http://ico.ooopic.com/ajax/iconpng/?id=145044.png'
    },
    styles: {
        titleColor: '#000',
        titleSize: 16,
        subTitleColor: '#999',
        subTitleSize: 12,
        illusAlign: 'left'
    }
}, function(ret){
    if(ret){
        alert(JSON.stringify(ret));
    }
});

##可用性

iOS系统,Android系统

可提供的1.0.0及更高版本

#addMobileAnnotations

在地图上添加可移动、旋转的标注图标,注意:本 id 不可与 addAnnotations、addBillboard 接口内的 id 相同

addMobileAnnotations({params})

##params

annotations:

  • 类型:数组
  • 描述:图标标注信息组成的数组
  • 内部字段:
[{
    id: 10,                    //数字类型;图标标注的唯一标识
    lon: 116.233,              //数字类型;图标标注所在位置的经度
    lat: 39.134,               //数字类型;图标标注所在位置的纬度
    icon: 'widget://'          //字符串类型;指定的标注图标,要求本地路径(fs://,widget://)
}]

##示例代码

var map = api.require('bMap');
        map.addMobileAnnotations({
            annotations: [{
                id: 10, lon: 116.297, lat: 40.109, icon:'widget://image/bMap_car1.png'
            },{
                id: 11, lon: 116.98, lat: 40.109, icon:'widget://image/bMap_car2.png'
            },{
                id: 12, lon: 115.30, lat: 40.109, icon:'widget://image/bMap_car3.png'
            },{
                id: 13, lon: 116.297, lat: 39.109, icon:'widget://image/bMap_car1.png'
            },{
                id: 14, lon: 116.98, lat: 39.109, icon:'widget://image/bMap_car2.png'
            },{
                id: 15, lon: 115.30, lat: 39.109, icon:'widget://image/bMap_car3.png'
            }]
});

##可用性

iOS系统,Android系统

可提供的1.0.0及更高版本

#moveAnnotation

移动地图上已添加的可移动、旋转的标注图标,在移动动画开始前,会先做 0.3 秒的旋转动画,使所移动的图标中间轴线顶端对准终点坐标点。由于百度官方 SDK 的 bug 限制,在 Android 平台上,如果标注添加到地图当前可视区域以外的区域,则不可以移动该标注

moveAnnotation({params}, callback(ret))

##params

id:

  • 类型:数字
  • 描述:要移动的标注的 id

duration:

  • 类型:数字
  • 描述:(可选项)标注图标移动动画的时间,单位为秒(s),不包括旋转动画时间
  • 默认值:1.0(s)

end:

  • 类型:JSON对象
  • 描述:终点经纬度
  • 内部字段:
{
    lon: 116.581515,    //数字类型;终点的经度
    lat: 29.615467      //数字类型;终点的纬度
}

##callback(ret)

ret:

  • 类型:JSON对象
  • 内部字段:
{
    id:         //数字类型;移动动画结束的标注的 id
}

##示例代码

	var map = api.require('bMap');
	for (var i=0; i<6; i++) {
	  map.moveAnnotation({
	      id: 10+i,
	      duration: 6,
	      end:{
	          lon:116.3843839609304,
	          lat:39.98964439091298
	      }
	  }, function(ret, err){
	      alert(ret.id + '移动结束')
	  });
	}

##可用性

iOS系统,Android系统

可提供的1.0.0及更高版本

#**removeAnnotations**

移除指定 id 的标注(可移动、不可移动)或布告牌

removeAnnotations({params})

##params

ids:

  • 类型:数组
  • 描述:要移除的标注或布告牌id(数字)

##示例代码

var map = api.require('bMap');
map.removeAnnotations({
    ids: [1,3,5,7]
});

##可用性

iOS系统,Android系统

可提供的1.0.0及更高版本

#addLine

在地图上添加折线

addLine({params})

##params

id:

  • 类型:数字
  • 描述:折线的 id

styles:

  • 类型:JSON对象
  • 描述:(可选项)折线的样式
  • 内部字段:
{
    borderColor: '#000',                //(可选项)字符串类型;折线的颜色,支持rgb、rgba、#;默认值:'#000'
    borderWidth: 3                      //(可选项)数字类型;折线的宽度,默认:1
}

points:

  • 类型:数组
  • 描述:折线的多个点组成的数组
  • 内部字段:
[{
    lon: 116.297,     //数字类型;经度
    lat: 40.109       //数字类型;纬度
}]

##示例代码

var map = api.require('bMap');
map.addLine({
    id: 1,
    styles: {
        borderColor: '#FF0000',
        borderWidth: 3
	 },
	 points: [{
	     lon:116.39432327,
	     lat:39.98963192
	 },{
	     lon: 116.49432328,
	     lat: 39.98963192
	 },{
	     lon: 116.39432327,
	     lat: 39.88933191
	 }]
});

##可用性

iOS系统,Android系统

可提供的1.0.0及更高版本

#addPolygon

在地图上添加多边形

addPolygon({params})

##params

id:

  • 类型:数字
  • 描述:多边形的 id,不可与 addLine 接口内的 id 相同

styles:

  • 类型:JSON对象
  • 描述:(可选项)多边形的样式
  • 内部字段:
{
    borderColor: '#000',    //(可选项)字符串类型;多边形的边框颜色,支持rgb、rgba、#;默认:'#000'
    fillColor: '#000',      //(可选项)字符串类型;多边形的填充色,支持rgb、rgba、#;默认:'#000'
    borderWidth: 3          //(可选项)数字类型;多边形的边框宽度,默认:1
}

points:

  • 类型:数组
  • 描述:多边形的各个点组成的数组
  • 内部字段:
[{
    lon: 116.297,      //数字类型;经度
    lat: 40.109        //数字类型;纬度
}]

##示例代码

var map = api.require('bMap');
map.addPolygon({
    id: 2,
    styles: {
        borderColor: '#FF0000',
        borderWidth: 3,
        fillColor:'#0000ff'
    },
	 points: [{
	     lon:116.39432327,
	     lat:39.98963192
	 },{
	     lon: 116.49432328,
	     lat: 39.98963192
	 },{
	     lon: 116.39432327,
	     lat: 39.88933191
	 }]
});

##可用性

iOS系统,Android系统

可提供的1.0.0及更高版本

#addArc

在地图上添加弧形

addArc({params})

##params

id:

  • 类型:数字
  • 描述:多边形的 id,不可与 addLine、addPolygon 接口内的 id 相同

styles:

  • 类型:JSON对象
  • 描述:(可选项)弧形的样式
  • 内部字段:
{
    borderColor: '#000',    //(可选项)字符串类型;弧形的边框颜色,支持rgb、rgba、#;默认:'#000'
    borderWidth: 3          //(可选项)数字类型;弧形的边框宽度,默认:1
}

points:

  • 类型:数组
  • 描述:弧形的各个点(弧形两端点和弧形中间点)组成的数组
  • 内部字段:
[{
    lon: 116.297,      //数字类型;经度
    lat: 40.109        //数字类型;纬度
}]

##示例代码

var map = api.require('bMap');
map.addArc({
    id: 3,
    styles: {
        borderColor: '#FF0000',
        borderWidth: 3
    },
	points: [{
        lon:116.39432327,
        lat:39.98963192
	},{
        lon: 116.49432328,
        lat: 39.98963192
	},{
        lon: 116.39432327,
        lat: 39.88933191
	}]
});

##可用性

iOS系统,Android系统

可提供的1.0.0及更高版本

#addCircle

在地图上添加圆形

addCircle({params})

##params

id:

  • 类型:数字
  • 描述:圆形的 id,不可与 addLine、addPolygon、addArc 接口的 id 相同

center:

  • 类型:JSON对象
  • 描述:圆形中心点的经纬度
  • 内部字段:
{
    lon: 116.297,       //数字类型;圆形中心点的经度
    lat: 40.109         //数字类型;圆形中心点的纬度
}

radius:

  • 类型:数字
  • 描述:圆形的半径

styles:

  • 类型:JSON对象
  • 描述:(可选项)圆形的样式
  • 内部字段:
{
    borderColor: '#000',    //(可选项)字符串类型;圆形的边框颜色,支持rgb、rgba、#;默认:'#000'
    fillColor: '#000',      //(可选项)字符串类型;圆形的填充色,支持rgb、rgba、#;默认:'#000'
    borderWidth: 3          //(可选项)数字类型;圆形的边框宽度,默认:1
}

##示例代码

var map = api.require('bMap');
map.addCircle({
    id: 4,
    center: {
        lon: 116.39432327,
        lat: 39.98963192
    },
    radius: 500,
    styles: {
        borderColor: '#FF0000',
        borderWidth: 3,
        fillColor:'#0000ff'
    }
});

##可用性

iOS系统,Android系统

可提供的1.0.0及更高版本

#addImg

在地图上添加图片

addImg({params})

#params

id:

  • 类型:数字
  • 描述:图片 id,不可与 addLine、addPolygon、addArc、addCircle 接口的 id 相同

imgPath:

  • 类型:字符串
  • 描述:图片的路径,要求本地路径(fs://,widget://)

lbLon:

  • 类型:数字
  • 描述:左下角点的经度

lbLat:

  • 类型:数字
  • 描述:左下角点的纬度

rtLon:

  • 类型:数字
  • 描述:右上角点的经度

rtLat:

  • 类型:数字
  • 描述:右上角点的纬度

opacity:

  • 类型:数字
  • 描述:图片透明度,取值范围:0-1
  • 默认:1

##示例代码

var map = api.require('bMap');
map.addImg({
    id: 5,
    imgPath: 'widget://res/over_img.png',
    lbLon: 116.39432327,
    lbLat: 39.88933191,
    rtLon: 116.49432328,
    rtLat: 39.98963192,
    opacity: 0.8
});

##可用性

iOS系统,Android系统

可提供的1.0.0及更高版本

#removeOverlay

移除指定 id 的覆盖物(addLine、addPolygon、addArc、addCircle、addImg添加的覆盖物)

removeOverlay({params})

##params

ids:

  • 类型:数组
  • 描述:要移除的 id(数字)组成的数组

##示例代码

var map = api.require('bMap');
map.removeOverlay({
    ids: [1, 2, 3, 4, 5]
});

##可用性

iOS系统,Android系统

可提供的1.0.0及更高版本

#searchRoute

搜索路线方案,无需调用 open 接口即可使用

searchRoute({params}, callback(ret, err))

##params

id:

  • 类型:数字
  • 描述:搜索的路线 id ,drawRoute 时使用

type:

  • 类型:字符串
  • 描述:(可选项)路线类型
  • 默认值:transit
  • 取值范围:
    • drive(开车)
    • transit(公交)
    • walk(步行)

policy:

  • 类型:字符串
  • 描述:(可选项)路线策略,type 为 walk(步行)时,此参数可不传
  • 默认值:'ebus_time_first/ecar_time_first'
  • 取值范围:
    • ecar_fee_first(驾乘检索策略常量:较少费用)
    • ecar_dis_first(驾乘检索策略常量:最短距离)
    • ecar_time_first(驾乘检索策略常量:时间优先)
    • ecar_avoid_jam(驾乘检索策略常量:躲避拥堵)
    • ebus_no_subway(公交检索策略常量:不含地铁)
    • ebus_time_first(公交检索策略常量:时间优先)
    • ebus_transfer_first(公交检索策略常量:最少换乘)
    • ebus_walk_first(公交检索策略常量:最少步行距离)

start:

  • 类型:JSON对象
  • 描述:起点信息
  • 内部字段:
{
    lon: 116.403838,    //(可选项)数字类型;起点经度
    lat: 39.914437      //(可选项)数字类型;起点纬度
}

end:

  • 类型:JSON对象
  • 描述:终点信息
  • 内部字段:
{
    lon: 116.384852,    //(可选项)数字类型;终点经度
    lat: 39.989576      //(可选项)数字类型;终点纬度
}

##callback(ret, err)

ret:

  • 类型:JSON对象
  • 内部字段:
{
    status: true,                   //布尔型;true||false
    plans: [{                       //数组类型;路线方案描述
        start:{                     //JSON对象;起点信息
           lon: 116.384852,         //数字类型;起点经度
           lat: 39.989576,          //数字类型;起点纬度
           description: ''          //字符串类型;起点说明文字
        },
        end:{                       //JSON对象;终点信息
           lon: 116.384852,         //数字类型;终点经度
           lat: 39.989576,          //数字类型;终点纬度
           description: ''          //字符串类型;终点说明文字
        },
        nodes:[{                    //数组类型;路线经过的结点信息组成的数组
            lon: 116.384852,        //数字类型;结点经度
            lat: 39.989576,         //数字类型;结点纬度
            degree: 30,             //数字类型;结点转弯角度
            description: ''         //字符串类型;结点说明文字
        }],
        distance: 1000,             //数字类型;路线长度,单位:米
        duration: 10                //数字类型;路线耗时,单位:秒
    }]
}

err:

  • 类型:JSON对象
  • 内部字段:
{
    code: 1,            //数字类型;
                        //错误码:
                        //-1(未知错误)
                        //1(检索词有歧义)
                        //2(检索地址有歧义)
                        //3(该城市不支持公交搜索)
                        //4(不支持跨城市公交)
                        //5(没有找到检索结果)
                        //6(起终点太近)
                        //7(key错误)
                        //8(网络连接错误)
                        //9(网络连接超时)
                        //10(还未完成鉴权,请在鉴权通过后重试)
    //数组类型;建议起点信息,若传入的起点信息不明确,则返回该字段
    suggestStarts: [{   
        name: '',       //字符串类型;地点名
        city: '',       //字符串类型;地点所在城市
        lon: 116.213,   //数字类型;地点经度
        lat: 39.213     //数字类型;地点纬度
    }],
    //数组类型;建议终点信息,若传入的终点信息不明确,则返回该字段
    suggestEnds: [{     
        name: '',       //字符串类型;地点名
        city: '',       //字符串类型;地点所在城市
        lon: 116.213,   //数字类型;地点经度  
        lat: 39.213     //数字类型;地点纬度
    }]
}

##示例代码

var map = api.require('bMap');
map.searchRoute({
    id: 1,
    type: 'drive',
    policy: 'ecar_fee_first',
    start: {
        lon: 116.403838,
        lat: 39.914437
    },
    end: {
        lon: 116.384852,
        lat: 39.989576
    }
}, function(ret, err){
    if(ret.status){
        api.alert({msg:JSON.stringify(ret)});
    }
});

##可用性

iOS系统,Android系统

可提供的1.0.0及更高版本

#drawRoute

在地图上显示指定路线,调用本接口前,必须保证已经调用过接口 open 和 searchRoute

drawRoute({params}, callback(ret))

##params

id:

  • 类型:数字
  • 描述:路线 id (searchRoute 时传的 id),removeRoute 时使用此 id 移除路线

autoresizing:

  • 类型:布尔
  • 描述:路线渲染结束是否自动调整地图可视区域
  • 默认值:true

index:

  • 类型:数字类型
  • 描述:路线方案的索引,在 searchRoute 时返回的多个路线方案组成的数组中的索引
  • 默认值:0

styles:

  • 类型:JSON对象
  • 描述:路线样式设置
  • 内部字段:
{
    start: {         
       icon: ''      //(可选项)字符串类型;起点图标,有默认图标
    },
    end: {           
       icon: ''      //(可选项)字符串类型;终点图标,有默认图标
    }
}

##callback(ret)

ret:

  • 类型:JSON对象
  • 内部字段:
{
    nodeIndex: 0,    //数字类型;点击路线上结点的索引(该路线在所属方案 nodes 数组内的索引)
    routeId: 1       //数字类型;点击的结点所在的路线的 id
}

##示例代码

var map = api.require('bMap');
map.searchRoute({
    type: 'drive',
    policy: 'ecar_fee_first',
    start: {
        lon: 116.403838,
        lat: 39.914437
    },
    end: {
        lon: 116.384852,
        lat: 39.989576
    }
}, function(ret, err){
    if(ret.status){
	    map.drawRoute({
		    id: 1,
           autoresizing:false,
		    index: 0,
		    styles: {
                start: {
                    icon: 'widget://image/bmap_start.png'
                },
                end: {
                    icon: 'widget://image/bmap_end.png'
                }
		    }
	    }, function(ret){
	       api.alert({msg:JSON.stringify(ret)});
	    });
    } else {
       api.alert({msg:JSON.stringify(err)});
    }
});

##可用性

IOS系统,Android系统

可提供的1.0.0及更高版本

#removeRoute

移除指定 id 的路线

removeRoute({params})

##params

ids:

  • 类型:数组
  • 描述:所要移除的 id(数字)组成的数组

##示例代码

var map = api.require('bMap');
map.removeRoute({
    ids: [1, 2, 3]
});

##可用性

iOS系统,Android系统

可提供的1.0.0及更高版本

#searchBusRoute

根据关键字搜索公交、地铁线路,无需调用 open 接口即可搜索

searchBusRoute({params}, callback(ret, err))

##params

city:

  • 类型:字符串
  • 描述:城市

line:

  • 类型:字符串
  • 描述:公交、地铁线路号(例如:1路,1号线)

##callback(ret,err)

ret:

  • 类型:JSON对象
  • 内部字段:
{
      status: true,     //布尔型;true||false
      results: [{           //数组类型;返回搜索结果列表
        name: '',           //字符串类型;名称
        uid: '',            //字符串类型;兴趣点 uid
        city: '',           //字符串类型;所在城市
        poiType: 0          //数字类型;POI 类型
                            //取值类型:
                            //2(公交线路)
                            //4(地铁线路)
      }] 
}

err:

  • 类型:JSON对象
  • 内部字段:
{
    code: 1           //数字类型;错误码
                      //1(检索词有岐义)
                      //2(检索地址有岐义)
                      //3(没有找到检索结果)
                      //4(key错误)
                      //5(网络连接错误)
                      //6(网络连接超时)
                      //7(还未完成鉴权,请在鉴权通过后重试)
}

##示例代码

var map = api.require('bMap');
map.searchBusRoute({
    city: '北京',
    line: '110'
},function(ret, err){
    if(ret.status){
        alert(JSON.stringify(ret));
    }else{
        alert(JSON.stringify(err));
    }
});

##可用性

iOS系统,Android系统

可提供的1.0.0及更高版本

#drawBusRoute

根据 searchBusRoute 搜索返回的 uid 查询线路详情并绘制在地图上

drawBusRoute({params}, callback(ret, err))

##params

id:

  • 类型:数字
  • 描述:地图上显示的公交、地铁路线的 id,removeBusRoute 时使用此 id

autoresizing:

  • 类型:布尔
  • 描述:路线渲染结束是否自动调整地图可视区域
  • 默认值:true

city:

  • 类型:字符串
  • 描述:城市

uid:

  • 类型:字符串
  • 描述:searchBusRoute 接口获取到的目标兴趣点的 uid

##callback(ret, err)

ret:

  • 类型:JSON对象
  • 内部字段:
{
    status: true,              //布尔型;true||false
    eventType: 'draw',         //字符串类型;回调事件类型
                               //取值范围:
                               //draw(添加路线)
                               //click(用户点击路线上的结点)
    name: '',                  //字符串类型;公交线路名称
    company: '',               //字符串类型;公交公司名称
    startTime: '',             //字符串类型;公交路线首班车时间,格式为:hh:ss
    endTime: '',               //字符串类型;公交路线末班车时间,格式为:hh:ss
    isMonTicket: '',           //布尔类型;公交是线是否有月票
    stations: [{               //数组类型;所有站点信息
       lon: 116.404,           //数字类型;公交站经度
       lat: 39.915,            //数字类型;公交站纬度
       description: ''         //字符串类型;公交站描述
    }],
    nodeIndex: 0,              //数字类型;点击路线上结点的索引(在 stations 数组内的索引)
    routeId: 1                 //数字类型;点击的结点所在的路线的 id
}

err:

  • 类型:JSON对象
  • 内部字段:
{
    code: 1           //数字类型;错误码
                      //1(检索词有岐义)
                      //2(检索地址有岐义)
                      //3(没有找到检索结果)
                      //4(key错误)
                      //5(网络连接错误)
                      //6(网络连接超时)
                      //7(还未完成鉴权,请在鉴权通过后重试)
}

##示例代码

var map = api.require('bMap');
map.searchBusRoute({
    city: '北京',
    line: '110'
},function(ret, err){
    if(ret.status){
       var results = ret.results;
       for(var i=0, len=results.length; i<len; i++){
            var res = results[i];
            map.drawBusRoute({
                id: i+1,
                autoresizing:false,
                city: res.city,
                uid: res.uid,
                nodeShow: false
            },function(ret){
                if(ret.status){
                    alert(JSON.stringify(ret));
                }else{
                    alert(JSON.stringify(err));
                }
            });     
       }
    }else{
        alert(JSON.stringify(err));
    }
});

##可用性

iOS系统,Android系统

可提供的1.0.0及更高版本

#removeBusRoute

移除地图上显示的公交、地铁线路

removeBusRoute({params})

##params

ids:

  • 类型:数组
  • 描述:所要移除的公交、地铁线路的 id(数字)组成的数组

##示例代码

var map = api.require('bMap');
map.removeBusRoute({
   ids:[1]
});

##可用性

iOS系统,Android系统

可提供的1.0.0及更高版本

#searchInCity

根据单个关键字搜索兴趣点,无需调用 open 接口即可搜索

searchInCity({params}, callback(ret, err))

##params

city:

  • 类型:字符串
  • 描述:要搜索的城市

keyword:

  • 类型:字符串
  • 描述:搜索的关键字

pageIndex:

  • 类型:数字
  • 描述:(可选项)分页索引
  • 默认:0

pageCapacity:

  • 类型:数字
  • 描述:(可选项)每页包含数据条数,最多为50
  • 默认:10

##callback(ret, err)

ret:

  • 类型:JSON对象
  • 内部字段:
{
    status: true,           //布尔型;true||false
    totalNum: 10,           //数字类型;本次搜索的总结果数
    currentNum: 5,          //数字类型;当前页的结果数
    totalPage: 10,          //数字类型;本次搜索的总页数
    pageIndex: 1,           //数字类型;当前页的索引
    results: [{             //数组类型;返回搜索结果列表
        lon: 116.213,       //数字类型;当前内容的经度
        lat: 39.213,        //数字类型;当前内容的纬度
        name: '',           //字符串类型;名称
        uid: 123            //数字类型;兴趣点的id
        address: '',        //字符串类型;地址
        city: '',           //字符串类型;所在城市
        phone: '',          //字符串类型;电话号码
        poiType: 0          //数字类型;POI 类型
                            //取值类型:
                            //0(普通点)
                            //1(公交站)
                            //2(公交线路)
                            //3(地铁站)
                            //4(地铁线路)
    }]             
}

err:

  • 类型:JSON对象
  • 内部字段:
{
    code: 1           //数字类型;错误码
                      //1(检索词有岐义)
                      //2(检索地址有岐义)
                      //3(没有找到检索结果)
                      //4(key错误)
                      //5(网络连接错误)
                      //6(网络连接超时)
                      //7(还未完成鉴权,请在鉴权通过后重试)
}

##示例代码

var map = api.require('bMap');
map.searchInCity({
    city: '北京',
    keyword: '学校',
    pageIndex: 0,
    pageCapacity: 20
},function(ret){
    if(ret.status){
       alert(JSON.stringify(ret)); 
    }else{
        alert(JSON.stringify(err));
    }
});

##可用性

iOS系统,Android系统

可提供的1.0.0及更高版本

#searchNearby

根据单个关键字在圆形区域内搜索兴趣点,无需调用 open 接口即可搜索

searchNearby({params}, callback(ret, err))

##params

keyword:

  • 类型:字符串
  • 描述:搜索关键字

lon:

  • 类型:数字
  • 描述:指定区域中心点的经度

lat:

  • 类型:数字
  • 描述:指定区域中心点的纬度

radius:

  • 类型:数字
  • 描述:指定区域的半径,单位为 m(米)

pageIndex:

  • 类型:数字
  • 描述:(可选项)分页索引
  • 默认:0

pageCapacity:

  • 类型:数字
  • 描述:(可选项)每页包含数据条数,最多为50
  • 默认:10

##callback(ret, err)

ret:

  • 类型:JSON对象
  • 内部字段:
{
    status: true,           //布尔型;true||false
    totalNum: 20,           //数字类型;本次搜索的总结果数
    currentNum: 5,          //数字类型;当前页的结果数
    totalPage: 3,           //数字类型;本次搜索的总页数
    pageIndex: 1,           //数字类型;当前页的索引
    results: [{             //数组类型;返回搜索结果列表
        lon: 116.213,       //数字类型;当前内容的经度
        lat: 39.213,        //数字类型;当前内容的纬度
        name: '',           //字符串类型;名称
        uid: 123            //数字类型;兴趣点id
        address: '',        //字符串类型;地址
        city: '',           //字符串类型;所在城市
        phone: '',          //字符串类型;电话号码
        poiType: 0          //数字类型;POI 类型
                            //取值类型:
                            //0(普通点)
                            //1(公交站)
                            //2(公交线路)
                            //3(地铁站)
                            //4(地铁线路)
    }]  
}

err:

  • 类型:JSON对象
  • 内部字段:
{
    code: 1           //数字类型;错误码
                      //1(检索词有岐义)
                      //2(检索地址有岐义)
                      //3(没有找到检索结果)
                      //4(key错误)
                      //5(网络连接错误)
                      //6(网络连接超时)
                      //7(还未完成鉴权,请在鉴权通过后重试)
}

##示例代码

var map = api.require('bMap');
map.searchNearby({
    keyword: 'KTV',
    lon: 116.384767,
    lat: 39.989539,
    radius: 2000
},function(ret,err){
    if(ret.status){
        alert(JSON.stringify(ret));
    }else{
        alert(JSON.stringify(err));
    }
});

##可用性

iOS系统,Android系统

可提供的1.0.0及更高版本

#searchInBounds

根据单个关键字在方形区域内搜索兴趣点,无需调用 open 接口即可搜索

searchInBounds({params}, callback(ret, err))

##params

keyword:

  • 类型:字符串
  • 描述:搜索关键字

lbLon:

  • 类型:数字
  • 描述:矩形左下角的经度

lbLat:

  • 类型:数字
  • 描述:矩形左下角的纬度

rtLon:

  • 类型:数字
  • 描述:矩形右上角的经度

rtLat:

  • 类型:数字
  • 描述:矩形右上角的纬度

pageIndex:

  • 类型:数字
  • 描述:(可选项)分页索引
  • 默认:0

pageCapacity:

  • 类型:数字
  • 描述:(可选项)每页包含数据条数,最多为50
  • 默认:10

##callback(ret, err)

ret:

  • 类型:JSON对象
  • 内部字段:
{
    status: true,           //布尔型;true||false
    totalNum: 20,           //数字类型;本次搜索的总结果数
    currentNum: 5,          //数字类型;当前页的结果数
    totalPage: 3,           //数字类型;本次搜索的总页数
    pageIndex: 1,           //数字类型;当前页的索引
    results: [{             //数组类型;返回搜索结果列表
        lon: 116.213,       //数字类型;当前内容的经度
        lat: 39.213,        //数字类型;当前内容的纬度
        name: '',           //字符串类型;名称
        uid: 123            //数字类型;兴趣点id
        address: '',        //字符串类型;地址
        city: '',           //字符串类型;所在城市
        phone: '',          //字符串类型;电话号码
        poiType: 0          //数字类型;POI 类型
                            //取值类型:
                            //0(普通点)
                            //1(公交站)
                            //2(公交线路)
                            //3(地铁站)
                            //4(地铁线路)
    }]
}

err:

  • 类型:JSON对象
  • 内部字段:
{
    code: 1           //数字类型;错误码
                      //1(检索词有岐义)
                      //2(检索地址有岐义)
                      //3(没有找到检索结果)
                      //4(key错误)
                      //5(网络连接错误)
                      //6(网络连接超时)
                      //7(还未完成鉴权,请在鉴权通过后重试)
}

##示例代码

var map = api.require('bMap');
map.searchInBounds({
    keyword: '图书馆', 
    lbLon: 112.47723797622677, 
    lbLat: 34.556480000000015, 
    rtLon: 109.77539000000002, 
    rtLat: 33.43144 
},function(ret,err){
    if(ret.status){
        alert(JSON.stringify(ret));
    }else{
        alert(JSON.stringify(err));
    }
});

##可用性

iOS系统,Android系统

可提供的1.0.0及更高版本

#autocomplete

根据关键字返回建议搜索关键字,无需调用 open 接口即可搜索

autocomplete({params}, callback(ret))

##params

keyword:

  • 类型:字符串
  • 描述:关键字

city:

  • 类型:字符串
  • 描述:要搜索的城市

##callback(ret, err)

ret:

  • 类型:JSON对象
  • 内部字段:
{
    status: true,           //布尔型;true||false
    results: []             //数组类型;返回建议搜索关键字组成的数组          
}

err:

  • 类型:JSON对象
  • 内部字段:
{
    code: 1           //数字类型;错误码
                      //1(检索词有岐义)
                      //2(检索地址有岐义)
                      //3(没有找到检索结果)
                      //4(key错误)
                      //5(网络连接错误)
                      //6(网络连接超时)
                      //7(还未完成鉴权,请在鉴权通过后重试)
}

##示例代码

var map = api.require('bMap');
map.autocomplete({
    keyword: '北京西站',
    city: '北京'
},function(ret){
    if(ret.status){
        alert(JSON.stringify(ret.results)); 
    }else{
        alert(JSON.stringify(err));
    }
});

##可用性

iOS系统,Android系统

可提供的1.0.0及更高版本

#getHotCityList

获取热门城市列表,无需调用 open 接口即可搜索

getHotCityList(callback(ret))

##callback(ret)

ret:

  • 类型:JSON对象
  • 内部字段:
{
    status: true,           //布尔型;true||false
    records : [{            //数组类型;返回热门城市的信息 
        name: '',           //字符串类型;城市名称
        size:  ,            //数字类型;数据包总大小
        cityID: ,           //数字类型;城市ID
        cityType: ,         //数字类型;城市类型,0:全国;1:省份;2:城市;如果是省份,可以通过childCities得到子城市列表
        childCities:[{     //数组类型;子城市列表
           name: '',       //字符串类型;城市名称
           cityID:         //数字类型;城市ID
        }]      
    }]                      
}

##示例代码

var map = api.require('bMap');
map.getHotCityList(function(ret){
    if(ret.status){
        alert(JSON.stringify(ret)); 
    }
});

##可用性

iOS系统,Android系统

可提供的1.0.0及更高版本

#getOfflineCityList

获取支持离线下载城市列表,无需调用 open 接口即可搜索

getOfflineCityList(callback(ret))

##callback(ret)

ret:

  • 类型:JSON对象
  • 内部字段:
{
    status: true,           //布尔型;true||false
    records : [{            //数组类型;返回支持离线下载城市的信息 
        name: '',           //字符串类型;城市名称
        size:  ,            //数字类型;数据包总大小
        cityID: ,           //数字类型;城市ID
        cityType: ,         //数字类型;城市类型,0:全国;1:省份;2:城市;如果是省份,可以通过childCities得到子城市列表
        childCities:[{     //数组类型;子城市列表
           name: '',       //字符串类型;城市名称
           cityID:         //数字类型;城市ID
        }]    
    }]                      
}

##示例代码

var map = api.require('bMap');
map.getOfflineCityList(function(ret){
    if(ret.status){
        alert(JSON.stringify(ret)); 
    }
});

##可用性

iOS系统,Android系统

可提供的1.0.0及更高版本

#searchCityByName

根据城市名搜索该城市离线地图记录,无需调用 open 接口即可搜索

searchCityByName(params,callback(ret))

##params

name:

  • 类型:字符串
  • 描述:指定搜索的城市名

##callback(ret)

ret:

  • 类型:JSON对象
  • 内部字段:
{
    status: true,           //布尔型;true||false
    records : [{            //数组类型;返回支持离线下载城市的信息 
        name: '',           //字符串类型;城市名称
        size:  ,            //数字类型;数据包总大小
        cityID: ,           //数字类型;城市ID
        cityType: ,         //数字类型;城市类型,0:全国;1:省份;2:城市;如果是省份,可以通过childCities得到子城市列表
        childCities:[{     //数组类型;子城市列表
           name: '',       //字符串类型;城市名称
           cityID:         //数字类型;城市ID
        }]    
    }]                      
}

##示例代码

var map = api.require('bMap');
map.searchCityByName({
    name: "北京"
}, function(ret){
    if(ret.status){
        alert(JSON.stringify(ret)); 
    }
});

##可用性

iOS系统,Android系统

可提供的1.0.0及更高版本

#getAllUpdateInfo

获取各城市离线地图更新信息,无需调用 open 接口即可搜索

getAllUpdateInfo(callback(ret))

##callback(ret)

ret:

  • 类型:JSON对象
  • 内部字段:
{
    status: true,           //布尔型;true||false
    records : [{            //数组类型;返回支持离线下载城市的信息 
        name: '',           //字符串类型;城市名称
        size:  ,            //数字类型;数据包总大小
        cityID: ,           //数字类型;城市ID
        serversize: ,       //数字类型;服务端数据大小,当update为YES时有效,单位:字节
        ratio: ,            //数字类型;下载比率,100为下载完成,下载完成后会自动导入,status为4时离线包导入完成
        update: ,            //布尔类型;更新状态,离线包是否有更新(有更新需重新下载)
        lat: ,              //数字类型;城市中心点纬度坐标
        lon: ,              //数字类型;城市中心点纬度坐标
        status:             //数字类型;下载状态, 
                            //-1:未定义 
                            //1:正在下载 
                            //2:等待下载 
                            //3:已暂停 
                            //4:完成 
                            //5:校验失败 
                            //6:网络异常 
                            //7:读写异常 
                            //8:Wifi网络异常 
                            //9:离线包数据格式异常,需重新下载离线包 
                            //10:离线包导入中
    }]                      
}

##示例代码

var map = api.require('bMap');
map.getAllUpdateInfo(function(ret){
    if(ret.status){
        alert(JSON.stringify(ret)); 
    }
});

##可用性

iOS系统,Android系统

可提供的1.0.0及更高版本

#getUpdateInfoByID

获取指定城市id离线地图更新信息,无需调用 open 接口即可搜索

getUpdateInfoByID(params, callback(ret))

##params

cityID:

  • 类型:数字
  • 描述:指定的城市id

##callback(ret)

ret:

  • 类型:JSON对象
  • 内部字段:
{
    status: true,           //布尔型;true||false
    cityInfo : {            //JSON对象;返回指定城市的离线地图更新信息 
        name: '',           //字符串类型;城市名称
        size:  ,            //数字类型;数据包总大小
        cityID: ,           //数字类型;城市ID
        serversize: ,       //数字类型;服务端数据大小,当update为YES时有效,单位:字节
        ratio: ,            //数字类型;下载比率,100为下载完成,下载完成后会自动导入,status为4时离线包导入完成
        update: ,            //布尔类型;更新状态,离线包是否有更新(有更新需重新下载)
        lat: ,              //数字类型;城市中心点纬度坐标
        lon: ,              //数字类型;城市中心点纬度坐标
        status:             //数字类型;下载状态, 
                            //-1:未定义 
                            //1:正在下载 
                            //2:等待下载 
                            //3:已暂停 
                            //4:完成 
                            //5:校验失败 
                            //6:网络异常 
                            //7:读写异常 
                            //8:Wifi网络异常 
                            //9:离线包数据格式异常,需重新下载离线包 
                            //10:离线包导入中
    }                      
}

##示例代码

var map = api.require('bMap');
map.getUpdateInfoByID({
    cityID: 1
}, function(ret){
    if(ret.status){
        alert(JSON.stringify(ret)); 
    }
});

##可用性

iOS系统,Android系统

可提供的1.0.0及更高版本

#start

启动下载指定城市 id 的离线地图,无需调用 open 接口即可搜索

start(params, callback(ret))

##params

cityID:

  • 类型:数字
  • 描述:指定的城市id

##callback(ret)

ret:

  • 类型:JSON对象
  • 内部字段:
{
    status: true,           //布尔型;true||false                  
}

##示例代码

var map = api.require('bMap');
map.start({
    cityID: 1
}, function(ret){
    if(ret.status){
        alert(JSON.stringify(ret)); 
    }
});

##可用性

iOS系统,Android系统

可提供的1.0.0及更高版本

#update

启动更新指定城市 id 的离线地图,无需调用 open 接口即可搜索

update(params, callback(ret))

##params

cityID:

  • 类型:数字
  • 描述:指定的城市id

##callback(ret)

ret:

  • 类型:JSON对象
  • 内部字段:
{
    status: true,           //布尔型;true||false                  
}

##示例代码

var map = api.require('bMap');
map.update({
    cityID: 1
}, function(ret){
    if(ret.status){
        alert(JSON.stringify(ret)); 
    }
});

##可用性

iOS系统,Android系统

可提供的1.0.0及更高版本

#pause

暂停下载指定城市 id 的离线地图,无需调用 open 接口即可搜索

pause(params, callback(ret))

##params

cityID:

  • 类型:数字
  • 描述:指定的城市id

##callback(ret)

ret:

  • 类型:JSON对象
  • 内部字段:
{
    status: true,           //布尔型;true||false                  
}

##示例代码

var map = api.require('bMap');
map.pause({
    cityID: 1
}, function(ret){
    if(ret.status){
        alert(JSON.stringify(ret)); 
    }
});

##可用性

iOS系统,Android系统

可提供的1.0.0及更高版本

#remove

删除下载指定城市 id 的离线地图,无需调用 open 接口即可搜索

remove(params, callback(ret))

##params

cityID:

  • 类型:数字
  • 描述:指定的城市id

##callback(ret)

ret:

  • 类型:JSON对象
  • 内部字段:
{
    status: true,           //布尔型;true||false                  
}

##示例代码

var map = api.require('bMap');
map.remove({
    cityID: 1
}, function(ret){
    if(ret.status){
        alert(JSON.stringify(ret)); 
    }
});

##可用性

iOS系统,Android系统

可提供的1.0.0及更高版本

#addOfflineListener

监听离线地图相关事件

addOfflineListener(callback(ret))

##callback(ret)

ret:

  • 类型:JSON对象
  • 内部字段:
{
    type: 0,                //数字类型;事件类型,取值范围如下:
                            //0:下载或更新
                            //1:检测到的压缩包个数
                            //2:当前解压的离线包
                            //3:错误的离线包
                            //4:有新版本
                            //5:扫描完毕
                            //6:新增离线包
    state:                  //数字类型;事件状态,
                            //当 type为 0 时,表示正在下载或更新城市id为state的离线包
                            //当 type 为1时,表示检测到state个离线压缩包
                            //当 type 为2时,表示正在解压第state个离线包
                            //当 type 为3时,表示有state个错误包
                            //当 type 为4时,表示id为state的城市离线包有更新
                            //当 type 为5时,表示扫瞄完成,成功导入state个离线包
                            //当 type 为6时,表示新安装的离线地图数目
}

##示例代码

var map = api.require('bMap');
map.addOfflineListener(function(ret){
    switch (ret.type)
    {
       case 0: {
	       map.getUpdateInfoByID({
	          cityID: 1
	       },function(ret){
	          api.alert({msg:ret.cityInfo.name+"下载进度:"+ret.cityInfo.ratio});
	       });
       }
       break;
       case 1:  {
          alert('检测到离线包个数是:'+ret.state);
       }
       break;
       case 2:  {
          alert('正在解压第state个离线包,导入时会回调此类型');
       }
       break;
       case 3:  {
          alert('有state个错误包,导入完成后会回调此类型');
       }
       break;
       case 4:  {
          alert('id为state的state城市有新版本,可调用update接口进行更新');
       }
       break;
       case 5:  {
          alert('导入成功state个离线包,导入成功后会回调此类型');
       }
       break;
       case 6:  {
          alert('新增离线包');
       }
       break;
       default:
       break;
    }
});

##可用性

iOS系统,Android系统

可提供的1.0.0及更高版本

#removeOfflineListener

移除监听离线地图事件

removeOfflineListener()

##示例代码

var map = api.require('bMap');
map.removeOfflineListener();

##可用性

iOS系统,Android系统

可提供的1.0.0及更高版本