googleMap
close hide setLocationButton setTraffic setRect getLocationForAPI stopLocationForAPI getNameFromCoords showUserLocation getCenter setZoomLevel addEventListener
添加标注类
addAnnotations getAnnotationCoords setAnnotationIcon setBubble
搜索类
在地图上绘图
概述
谷歌地图简介
谷歌地图 是 Google 公司提供的电子地图服务,包括局部详细的卫星照片。该模块可以打开关闭地图视图,获取当前定位,坐标与地理位置的转换,添加标注,监听地图事件等功能。 使用此模块,手机上必须安装Google Play服务、Googel Play Store。
使用此模块之前必须先配置 config 文件,配置方法如下:
同一个 App 需要同时支持 iOS 和 Android 平台,必须单独申请各自的 apiKey,并同时配置在 config 文件中
支持 android 平台时的配置方法:
- 配置示例:
value是在谷歌申请的apiKey,如果有ios平台,android_api_key应该和ios的ios_api_key配置在一个节点(googleMap)下面
注:从1.0.4版本开始需要配置com.google.android.gms.version,其中value值固定(11020000);如果和googleAnalytics、googlePush模块同时编译,可以共用一个
(模块1.1.1以及以后版本无需配置com.google.android.gms.version)
支持 iOS 平台时的配置方法:
- 名称:googleMap
- 参数:ios_api_key,ios_directions_key
- 配置示例:
<param name="ios_api_key" value="AIzaSyAPLwmxjyqqXjJ6g_5MSra5mzKElqIUZsz" />
<param name="ios_directions_key" value="AIzaSyAyeQp1HxV71ynKRRnsS40vEJcCYdyn3Rs" />
</feature>
字段描述:
ios_api_key:在谷歌地图开放平台申请的 iOS 端 AK ios_directions_key:在谷歌地图开放平台申请的 iOS 端 AK
ios_api_key申请方法见旧版 Google Maps Mobile SDK for Work:iOS —-
ios_directions_key申请方法:获取 API 密钥
注意:请确保您的 ak 正确性,否则地图加载异常,在 ios 平台最低适配版本为 iOS 8.0
使用本模块定位相关接口获取的坐标数据是 GPS 坐标系,若通过此数据显示在中国区地图上需转换为火星坐标,否则会有很大偏差。若显示在国外区域地图上则不用转换,因为谷歌地图中国区域跟外国区域使用的坐标系不一样。关于地图坐标系的知识可自行查阅相关资料。
模块接口
open
打开谷歌地图
open({params}, callback(ret))
params
rect:
- 类型:JSON 对象
- 描述:(可选项)模块的位置及尺寸
- 内部字段:
{
x: 0, //(可选项)数字类型;地图左上角的 x 坐标(相对于所属的 Window 或 Frame);默认:0
y: 0, //(可选项)数字类型;地图左上角的 y 坐标(相对于所属的 Window 或 Frame);默认:0
w: 320, //(可选项)数字类型;地图的宽度;默认:'auto'
h: 480 //(可选项)数字类型;地图的高度;默认:'auto'
}
center:
- 类型:数字
- 描述:(可选项)打开地图时设置的中心点经纬度
- 内部字段:
{
lon: 116.213, //数字类型;打开地图时设置的中心点经度
lat: 39.213 //数字类型;打开地图时设置的中心点纬度
}
zoomLevel:
- 类型:数字
- 描述:(可选项)设置谷歌地图缩放等级,取值范围:1-21级(Android)、getZoomExtremity接口获取(iOS)
- 默认值:10
showUserLocation:
- 类型:布尔
- 描述:(可选项)是否在地图上显示用户位置
- 默认值:true
fixedOn:
- 类型:字符串类型
- 描述:(可选项)模块视图添加到指定 frame 的名字(只指 frame,传 window 无效)
- 默认:模块依附于当前 window
fixed:
- 类型:布尔
- 描述:(可选项)模块是否随所属 window 或 frame 滚动
- 默认值:true(不随之滚动)
callback(ret)
ret:
- 类型:JSON 对象
- 内部字段:
{
status: true //布尔型;true||false
}
示例代码
var GoogleMap = api.require('googleMap');
GoogleMap.open({
rect: {
x: 0,
y: 0,
w: 320,
h: 300
},
showUserLocation: true,
zoomLevel: 11,
center: {
lon: 116.4021310000,
lat: 39.9994480000
},
fixedOn: api.frameName,
fixed: true
}, function(ret) {
if (ret.status) {
alert(JSON.stringify(ret));
}
});
可用性
iOS系统,Android系统
可提供的1.0.0及更高版本
close
关闭谷歌地图
close()
示例代码
var GoogleMap = api.require('googleMap');
GoogleMap.close();
可用性
iOS系统,Android系统
可提供的1.0.0及更高版本
show
显示谷歌地图
show()
示例代码
var GoogleMap = api.require('googleMap');
GoogleMap.show();
可用性
iOS系统,Android系统
可提供的1.0.0及更高版本
hide
隐藏谷歌地图
hide()
示例代码
var GoogleMap = api.require('googleMap');
GoogleMap.hide();
可用性
iOS系统,Android系统
可提供的1.0.0及更高版本
setType
设置地图类型
setType({params})
params
type:
- 类型:字符串
- 描述:指定的地图的类型
- 默认:normal
- 取值范围:
- normal:典型道路地图。显示道路、人类建造的一些特征以及河流等重要的自然特征。
- satellite:卫星照片数据。不显示道路和景观标签。
- terrain:地形数据。 地图包含颜色、轮廓线和标签以及透视阴影。
- hybrid:添加了道路地图的卫星照片数据。 此外,还会显示道路和景观标签。
- none:无地图图块。 不会呈现基本地图图块。
示例代码
var GoogleMap = api.require('googleMap');
GoogleMap.setType({
type: 'setellite'
});
可用性
iOS系统,Android系统
可提供的1.0.0及更高版本
setTraffic
设置地图是否显示交通路况
setTraffic({params})
params
traffic:
- 类型:布尔
- 描述:是否显示交通路况
- 默认:false
示例代码
var GoogleMap = api.require('googleMap');
GoogleMap.setTraffic({
traffic: true
});
可用性
iOS系统,Android系统
可提供的1.0.0及更高版本
setLocationButton
设置地图是否显示定位按钮
setLocationButton({params})
params
locationButton:
- 类型:布尔
- 描述:是否显示定位按钮
- 默认:false
示例代码
var GoogleMap = api.require('googleMap');
GoogleMap.setLocationButton({
locationButton: true
});
可用性
iOS系统
可提供的1.0.0及更高版本
setCompassButton
设置地图是否显示指南针
setCompassButton({params})
params
compassButton:
- 类型:布尔
- 描述:是否显示指南针
- 默认:false
示例代码
var GoogleMap = api.require('googleMap');
GoogleMap.setCompassButton({
compassButton: true
});
可用性
iOS系统,Android系统
可提供的1.0.0及更高版本
setBuildings
设置地图是否显示建筑
setBuildings({params})
params
buildings:
- 类型:布尔
- 描述:是否显示建筑
- 默认:false
示例代码
var GoogleMap = api.require('googleMap');
GoogleMap.setBuildings({
buildings: true
});
可用性
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 GoogleMap = api.require('googleMap');
GoogleMap.setRect({
rect: {
x: 0,
y: 0,
w: 320,
h: 300
}
});
可用性
iOS系统,Android系统
可提供的1.0.0及更高版本
getLocation
获取当前位置信息,若要支持后台定位需 config.xml 文件 location 字段,无需调用 open 接口即可使用
注:getLocationForAPI 和 getLocation 两个的区别是:
1、getLocation 接口使用的是原生自带的 api 去请求位置;getLocationForAPI 接口用的是谷歌地图自带的 api 去请求位置信息,因此需要连接上Google Play 服务;
2、停止定位需要对应的接口,getLocationForAPI-stopLocationForAPI(iOS端是直接获取当前位置,无需停止);getLocation-stopLocation
3、android 上推荐使用 getLocationForAPI 接口
getLocation({params}, callback(ret))
params
autoStop:
- 类型:布尔
- 描述:(可选项)获取到位置信息后是否自动停止定位
- 默认值:true
locationType:
- 类型:字符串
- 描述:(可选项)获取定位的方式 (ios不支持)
- 默认值:gps
- 取值范围
- gps
- network (需要用户打开手机设置里面的位置信息,并选择使用wlan或者移动数据定位方式)
accuracy:
- 类型:字符串
- 描述:(可选项)定位精度,仅支持 iOS 端
- 默认值:’100m’
- 取值范围:
- 10m
- 100m
- 1km
- 3km
filter:
- 类型:数字
- 描述:(可选项)位置更新所需的最小距离(单位米),autoStop 为 true 时,此参数有效,仅支持 iOS 端
- 默认值:1.0
callback(ret)
ret:
- 类型:JSON 对象
- 内部字段:
{
status: true, //布尔型;true||false
lon: 116.213, //数字类型;经度
lat: 39.213, //数字类型;纬度
accuracy: 65, //数字类型;本次定位的精度,仅支持 iOS 平台
timestamp: 1396068155591, //数字类型;时间戳
heading:200, //数字类型;设备方向,取值范围:0.0(正北) - 359.9
altitude: 200 //数字类型;当前设备所处的海拔信息
}
示例代码
var GoogleMap = api.require('googleMap');
GoogleMap.getLocation(function(ret) {
if (ret.status) {
alert(JSON.stringify(ret));
}
});
可用性
iOS系统,Android系统
可提供的1.0.0及更高版本
getLocationForAPI
获取当前位置信息,若要支持后台定位需 config.xml 文件 location 字段,无需调用 open 接口即可使用
注:getLocationForAPI 和 getLocation 两个的区别是:
1、getLocation 接口使用的是原生自带的 api 去请求位置;getLocationForAPI 接口用的是谷歌地图自带的 api 去请求位置信息,因此需要连接上Google Play 服务;
2、停止定位需要对应的接口,getLocationForAPI-stopLocationForAPI(iOS端是直接获取当前位置,无需停止);getLocation-stopLocation
3、android 上推荐使用 getLocationForAPI 接口
getLocationForAPI({params}, callback(ret))
params
autoStop:
- 类型:布尔
- 描述:(可选项)获取到位置信息后是否自动停止定位
- 默认值:true
callback(ret)
- 类型:JSON 对象
- 内部字段:
{
status: true, //布尔型;true||false
errCode: 1000, //数字类型;在status为false时有值;错误码(一般在无法连接google play时返回)
errMsg:"", //字符串类型;在status为false时有值;错误信息(一般在无法连接google play时返回)
lon: 116.213, //数字类型;经度
lat: 39.213, //数字类型;纬度
accuracy: 65, //数字类型;本次定位的精度
timestamp: 1396068155591, //数字类型;时间戳
heading:200, //数字类型;设备方向,取值范围:0.0(正北) - 359.9
altitude: 200 //数字类型;当前设备所处的海拔信息
}
示例代码
var GoogleMap = api.require('googleMap');
GoogleMap.getLocationForAPI(function(ret) {
if (ret.status) {
alert(JSON.stringify(ret));
}
});
可用性
iOS系统,Android系统
可提供的 1.0.3 及更高版本
stopLocation
停止定位
stopLocation()
示例代码
var GoogleMap = api.require('googleMap');
GoogleMap.stopLocation();
iOS系统,Android系统
可提供的1.0.0及更高版本
stopLocationForAPI
停止定位
stopLocationForAPI()
示例代码
var GoogleMap = api.require('googleMap');
GoogleMap.stopLocationForAPI();
可用性
Android系统
可提供的1.0.3及更高版本
getCoordsFromName
根据地址查找经纬度,无需调用 open 接口即可使用
注意:
在 ios 平台谷歌地图不支持地理编码,需要自己构造一个网络请求,然后自己做相应处理。谷歌的地理编码用到的是 首先需要去谷歌的开发者后台激活Google Maps Geocoding API,Key需要作为一个参数拼接到网络请求后面。 例如:https://maps.googleapis.com/maps/api/geocode/json?address= Staples Center&key=API_KEY 需要注意的是,普通用户 API 每天只能进行2500次请求,想要增加配合需要付费。
android平也支持使用以上方法进行获取
getCoordsFromName({params}, callback(ret, err))
params
city:
- 类型:字符串
- 描述:所要搜索的地址所在的城市,cityname(中文或中文全拼)、citycode、adcode
address:
- 类型:字符串
- 描述:完整的地址信息
callback(ret, err)
ret:
- 内部字段:
{
status: true, //布尔型;true||false
lon: 116.351, //数字类型;地址所在经度
lat: 39.283 //数字类型;地址所在纬度
}
err:
- 类型:JSON 对象
- 内部字段:
{
code: 1 //数字类型;错误码
msg: //字符串类型;错误描述
}
示例代码
var GoogleMap = api.require('googleMap');
GoogleMap.getCoordsFromName({
city: '北京',
address: '天安门'
}, function(ret, err) {
if (ret.status) {
alert(JSON.stringify(ret));
} else {
alert(JSON.stringify(err));
}
});
可用性
Android系统
可提供的1.0.0及更高版本
getNameFromCoords
根据经纬度查找地址信息,无需调用 open 接口即可使用
getNameFromCoords({params}, callback(ret))
params
lon:
- 类型:数字
- 描述:经度
lat:
- 类型:数字
- 描述:纬度
callback(ret)
ret:
- 类型:JSON 对象
- 内部字段:
示例代码
var GoogleMap = api.require('googleMap');
GoogleMap.getNameFromCoords({
lon: 116.384767,
lat: 39.989539
}, function(ret) {
if (ret.status) {
alert(JSON.stringify(ret));
}
});
可用性
iOS系统,Android系统
可提供的1.0.0及更高版本
getDistance
获取地图两点之间的距离,无需调用 open 接口即可使用
getDistance({params}, callback(ret))
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 GoogleMap = api.require('googleMap');
GoogleMap.getDistance({
start: {
lon: 106.486654,
lat: 29.490295
},
end: {
lon: 106.581515,
lat: 29.615467
}
}, function(ret) {
if (ret.status) {
alert(JSON.stringify(ret));
}
});
可用性
iOS系统,Android系统
可提供的1.0.0及更高版本
showUserLocation
是否在地图上显示用户位置
showUserLocation({params})
params
isShow:
- 类型:布尔
- 描述:(可选项)是否显示用户位置
- 默认值:true
示例代码
var GoogleMap = api.require('googleMap');
GoogleMap.showUserLocation({
isShow: true
});
可用性
iOS系统,Android系统
可提供的1.0.0及更高版本
setCenter
根据经纬度设置谷歌地图中心点
setCenter({params})
params
coords:
- 类型:JSON 对象
- 描述:(可选项)中心点的经纬度
- 内部字段:
{
lon: 116.404, //(可选项)数字类型;设置中心点的经度
lat: 39.915 //(可选项)数字类型;设置中心点的纬度
}
animation:
- 类型:布尔类型
- 描述:(可选项)设置地图的中心点时,是否带动画效果
- 默认:true
示例代码
var GoogleMap = api.require('googleMap');
GoogleMap.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 GoogleMap = api.require('googleMap');
GoogleMap.getCenter(function(ret) {
if (ret) {
alert(JSON.stringify(ret));
}
});
可用性
iOS系统,Android系统
可提供的1.0.0及更高版本
getZoomExtremity
获取谷歌地图缩放最大、最小值
getZoomExtremity(callback(ret))
callback(ret)
ret:
- 类型:JSON 对象
- 内部字段:
{
min: 0, //数字类型;最小值
max: 26 //数字类型;最大值
}
示例代码
var GoogleMap = api.require('googleMap');
GoogleMap.getZoomExtremity(function(ret){
if (ret) {
api.alert({msg:JSON.stringify(ret)});
}
});
可用性
iOS系统
可提供的1.0.0及更高版本
setZoomLevel
设置谷歌地图缩放等级
setZoomLevel({params})
params
level:
- 类型:数字
- 描述:(可选项)地图比例尺级别,取值范围:1-21级(Android)、通过getZoomExtremity接口获得(iOS)
- 默认值:10
animation:
- 类型:布尔类型
- 描述:(可选项)地图缩放时,是否带动画效果
- 默认:true
示例代码
var GoogleMap = api.require('googleMap');
GoogleMap.setZoomLevel({
level: 10,
animation: true
});
可用性
iOS系统,Android系统
可提供的1.0.0及更高版本
getZoomLevel
获取地图缩放级别取值范围:1-21级(Android)、通过getZoomExtremity接口获得(iOS)
getZoomLevel(callback(ret))
callback
ret:
- 类型:JSON 对象
- 内部字段:
{
level: 11 //数字类型;地图当前缩放级别
示例代码
var GoogleMap = api.require('googleMap');
GoogleMap.getZoomLevel(function(ret) {
if (ret) {
alert(JSON.stringify(ret));
}
});
可用性
iOS系统,Android系统
可提供的1.0.0及更高版本
addEventListener
监听地图相关事件
addEventListener({params}, callback(ret))
params
name:
- 类型:字符串
- 描述:地图相关事件名称
- 取值范围:
- longPress(长按事件)
- viewChange(视角改变事件)
- click(单击事件)
callback(ret)
ret:
- 类型:JSON 对象
- 内部字段:
{
status: true, //布尔型;true||false
lon: 116.351, //数字类型;触发事件的地点的经度(longPress,click),地图中心的经度(viewChange,zoom)
lat: 39.283, //数字类型;触发事件的地点的纬度(longPress,click),地图中心的纬度(viewChange,zoom)
zoom: 11, //数字类型;地图缩放角度
rotate: 30, //数字类型;地图旋转角度
overlook: 30, //数字类型;视角倾斜度
}
示例代码
var GoogleMap = api.require('googleMap');
GoogleMap.addEventListener({
name: 'longPress'
}, function(ret) {
if (ret.status) {
alert(JSON.stringify(ret));
}
});
可用性
iOS系统,Android系统
可提供的1.0.0及更高版本
removeEventListener
停止监听地图相关事件
removeEventListener({params})
params
name:
- 类型:字符串
- 描述:地图相关事件名称
- 取值范围:
- longPress(长按事件)
- viewChange(视角改变事件)
- click(单击事件)
示例代码
var GoogleMap = api.require('googleMap');
GoogleMap.removeEventListener({
name: 'longPress'
});
可用性
iOS系统,Android系统
可提供的1.0.0及更高版本
addAnnotations
在地图上添加标注信息,标注大小为 icons 内第一张图片大小的二分之一。图标中轴线的下边缘点为坐标基准点
addAnnotations({params})
params
annotations:
- 类型:数组
- 描述:图标标注信息组成的数组
- 内部字段:
[{
id: 1, //数字类型;图标标注的唯一标识
lon: 116.233, //数字类型;图标标注所在位置的经度
lat: 39.134, //数字类型;图标标注所在位置的纬度
icons: 'widget://', //(可选项)数组类型;指定的标注图标路径组成的数组,若包含多张图片,则此标注显示为多图联动的 gif 动画效果,要求本地路径(fs://、widget://),若不传则显示公用的 icons 图标,(仅支持ios)
icon: 'widget://', //(可选项)数组类型;指定的标注图标路径,要求本地路径(fs://、widget://),若不传则显示公用的 icon 图标(仅支持android)
draggable: true //(可选项)布尔类型;所添加的标注是否可被拖动,若不传则以公用的 draggable 为准
}]
icons:
- 类型:数组
- 描述:(可选项)指定的标注图标路径组成的数组,若包含多张图片,则此标注显示为多图联动的 gif ,要求本地路径(fs://、widget://)(仅支持ios)
- 默认值:红色大头针
icon:
- 类型:字符串
- 描述:(可选项)指定的标注图标路径,要求本地路径(fs://、widget://)(仅支持android)
- 默认值:红色大头针
draggable:
- 类型:布尔
- 描述:(可选项)所添加的标注是否可被拖动
- 默认值:false
timeInterval:
- 类型:数字
- 描述:(可选项)若添加的标注为动态图,则本参数表示动态图循环播放一次的时间,单位为秒(s),否则本参数无效(仅支持ios)
- 默认值:3.0
示例代码
var GoogleMap = api.require('googleMap');
GoogleMap.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
}],
icons: ['widget://'],
draggable: true,
timeInterval: 2.0
});
iOS系统,Android系统
可提供的1.0.0及更高版本
addAnnotationListener
添加对地图上标注的监听
addAnnotationListener(callback(ret, err))
callback(ret)
ret:
- 类型:JSON 对象
- 内部字段:
{
id: 10 //数字类型;相应事件的标注的
eventType: 'click', //字符串类型;交互事件类型
//取值范围:
//click(用户点击标注事件)
//drag(用户拖动标注事件)
//clickBubble(用户点击气泡事件)
//longPressBubble(长按气泡事件)(仅支持ios)
//closeBubble(气泡关闭事件)(仅支持ios)
dragState: 'starting' //字符串类型;标注被拖动的状态,当 eventType 为 drag 时本字段有值,
//取值范围:
//starting(开始拖动)
//dragging (拖动中)
//ending (拖动结束)
}
示例代码
var GoogleMap = api.require('googleMap');
GoogleMap.addAnnotationListener(function(ret) {
if (ret.eventType == 'drag') {
if(ret.dragState == 'dragging') {
console.log('JSON.stringify(ret)');
} else if (ret.dragState == 'starting') {
console.log('JSON.stringify(ret)');
} else {
api.alert({msg:JSON.stringify(ret)});
}
} else {
api.alert({msg:JSON.stringify(ret)});
}
});
可用性
iOS系统,Android系统
可提供的1.0.0及更高版本
getAnnotationCoords
getAnnotationCoords({params}, callback(ret))
params
id:
- 类型:数字
- 描述:指定的标注 id
callback(ret)
ret:
- 类型:JSON 对象
- 内部字段:
{
lon: 116.213, //数字类型;标注的经度
lat: 39.213 //数字类型;标注的纬度
}
示例代码
var GoogleMap = api.require('googleMap');
GoogleMap.getAnnotationCoords({
id: 2
}, function(ret) {
if (ret) {
api.alert({ msg: JSON.stringify(ret) });
}
});
可用性
iOS系统,Android系统
可提供的1.0.0及更高版本
setAnnotationCoords
设置某个已添加标注的经纬度
setAnnotationCoords(callback(ret, err))
params
id:
- 类型:数字
- 描述:指定的标注 id
lon:
- 类型:数字
- 描述:设置的经度
lat:
- 类型:数字
- 描述:设置的纬度
示例代码
可用性
iOS系统,Android系统
可提供的1.0.0及更高版本
setAnnotationIcon
设置某个已添加标注的图标
setAnnotationIcon(callback(ret, err))
params
id:
- 类型:数字
- 描述:指定的标注 id
icon:
- 类型:字符串
- 描述:指定的标注图标路径,要求本地路径(fs://、widget://)
示例代码
var GoogleMap = api.require('googleMap');
GoogleMap.setAnnotationIcon({
id: 2,
icon : "widget://image/icon.png"
});
可用性
iOS系统,Android系统
可提供的1.0.0及更高版本
removeAnnotations
移除制定标注
removeAnnotations({params})
params
id:
- 类型:数组
- 描述:指定的标注 id 组成的数组,若不传或传空,则移除所有标注
示例代码
var GoogleMap = api.require('googleMap');
GoogleMap.removeAnnotations({
id: [1]
});
可用性
iOS系统,Android系统
可提供的1.0.0及更高版本
setBubble
设置某个已添加标注的气泡(点击标注弹出的信息窗口),
注意:若不调用本接口设置气泡,或 content 参数传空,则点击标注无气泡弹出。
setBubble({params})
params
id:
- 类型:数字
- 描述:指定的标注 id
content:
- 类型:JSON 对象
- 描述:气泡内容文本
- 内部字段:
{
title: '', //字符串类型;气泡的标题文本
titleSize:14, //数字类型;气泡标题字体大小;默认值:14
titleColor:"#ff000000", //字符串类型;气泡标题字体颜色;默认值:#ff000000
snippet: '' //字符串类型;显示在标题下面的文本。 超出信息窗口宽度的字符串将自动换成多行。 特别长的消息可能会被截断。
snippetSize:14, //数字类型;气泡副标题字体大小;默认值:14
snippetColor:"#ff7f7f7f", //字符串类型;气泡副标题字体颜色;默认值:#ff7f7f7f
}
caption:
- 类型:JSON对象
- 描述:(可选项)气泡配图
- 内部字段:
img:"", //字符串类型;配图的路径地址;默认值:无
w:30, //数字类型;配图的宽;默认值:图片的宽
h:30 //数字类型;配图的高;默认值:图片的高
示例代码
var GoogleMap = api.require('googleMap');
GoogleMap.setBubble({
id: 2,
content: {
title: '点击、长按我有回调',
snippet: '可在addAnnotationListener接口回调中监听点击、长按事件'
}
});
可用性
iOS系统,Android系统
可提供的1.0.0及更高版本
searchRoute
搜索路线方案,无需调用 open 接口即可使用
searchRoute({params}, callback(ret, err))
params
id:
- 类型:数字
- 描述:搜索的路线 id ,drawRoute 时使用
origin:
- 类型:字符串
- 描述:路线计算起点的地址、纬度/经度文本值
- 举例:
- ‘Toronto’(如果传递地址,将对字符串进行地理编码,并将其转换为纬度/经度坐标以计算路线)
- ‘41.43206,-81.38992’(确保纬度值与经度值之间不存在空格)
destination:
- 类型:字符串
- 描述:路线计算终点的地址、纬度/经度文本值
- 举例:
- ‘Toronto’(如果传递地址,将对字符串进行地理编码,并将其转换为纬度/经度坐标以计算路线)
- ‘41.43206,-81.38992’(确保纬度值与经度值之间不存在空格)
mode:
- 类型:字符串
- 描述:(可选项)指定在计算路线时使用的交通模式
- 默认:driving
- 取值范围:
- driving:表示使用道路网的标准驾车路线。
- walking:请求经由步道和人行道(如有)的步行路线。
- bicycling:请求经由自行车道和首选街道(如有)的骑行路线。
- transit:请求经由公共交通线路(如有)的路线。如果您将该模式设置为 transit,作为可选步骤,您还可提供 transit_mode。
- 注:有时,步行路线和骑行路线可能均不包括明确的步道或自行车道,因此这些路线将在您必须向用户显示的返回结果中返回 warnings。
waypoints:
- 类型:字符串
- 描述:(可选项)指定一组路径点。路径点通过使路线经过指定位置来改变路线。路径点以纬度/经度坐标或将接受地理编码的地址形式指定。路径点不适用于公交路线。您可以利用路径点计算途经附加位置的路线,在这种情况下,返回的路线将包括在每个已知路径点处的停靠站。可以地址、纬度/经度坐标提供一个或多个以管道字符 (|) 分隔的位置。对于请求中的每个路径点,路线响应均会在 legs 数组中加入一个额外条目,提供该段旅程的对应详情。如果您想在不添加停靠站的情况下利用路径点影响路线,请为路径点添加 via: 前缀。带有 via: 前缀的路径点不会向 legs 数组添加条目,而是将旅程路线改为途经提供的路径点。
- 优化您的路径点:默认情况下,“路线”服务会按所提供路径点的给定顺序计算经过这些路径点的路线。作为可选步骤,您可以传递 optimize:true 作为 waypoints 参数内的第一个自变量,以便按更高效的顺序重组路径点来优化提供的路线。所有路径点都必须是停靠点。如果您优化路径点的顺序,其顺序将通过 routes 对象内的 waypoint_order 字段返回。waypoint_order 字段返回以零为起点的值。
- 举例:
- ‘Charlestown,MA|Lexington,MA’(如果您传递地址,路线服务将对字符串进行地理编码,并将其转换为纬度/经度坐标以计算路线)
- ‘-37.81223,144.96254|-34.92788,138.60008’(如果您传递纬度/经度坐标,它们将不加更改地直接用于计算路线。确保纬度值与经度值之间不存在空格)
- ‘via:-37.81223,144.96254|via:-34.92788,138.60008’(带有 via: 前缀的路径点)
- ‘optimize:true|Barossa+Valley,SA|Clare,SA’(需要路线优化的路径点)
alternatives:
- 类型:布尔
- 描述:(可选项)设置为 true 时,可在响应中提供多个备选路线。请注意,提供备选路线可能会增加服务器的响应时间。
- 默认:false
avoid:
- 类型:字符串
- 描述:(可选项)表示计算的路线应避开指定的特征
- 默认:不指定
- 取值范围:
- tolls:计算的路线应避开收费公路/桥梁。
- highways:计算的路线应避开高速公路。
- ferries:计算的路线应避开渡口。
- indoor:表示计算的路线应避开步行路线和公共交通路线的室内分段。
- 可以同时传递多种限制,例如:’tolls|highways|ferries’
- 注:添加限制不会将包括受限特征的路线排除在外,其作用仅仅是通过影响结果来获得更有利的路线。
transit_mode:
- 类型:字符串
- 描述:(可选项)指定一个或多个首选公共交通模式。只能为公共交通路线指定此参数
- 默认:不指定
- 取值范围:
- bus:表示计算的路线应首选公共汽车出行。
- subway:表示计算的路线应首选地铁出行。
- train:表示计算的路线应首选火车出行。
- tram:表示计算的路线应首选有轨电车和轻轨出行。
callback(ret)
ret:
- 类型:JSON 对象
- 内部字段:
{
geocoded_waypoints : [{ //数组类型;提供了有关起点、目的地和路径点地理编码的详情
geocoder_status : 'OK', //字符串类型;表示地理编码操作所产生的状态代码
//取值范围:
//OK:表示未出现任何错误;已成功解析地址,并且至少返回了一个地理编码
//ZERO_RESULTS:表示地理编码成功,但未返回任何结果。如果向地理编码器传递了一个不存在 address,就可能会发生这种情况
types : [ //数组类型;表示用于计算路线的地理编码结果的地址类型
'locality', //字符串类型;表示合并的城市或城镇政治实体
'political', //字符串类型;表示政治实体。通常,这种类型表示某个民政管理部门的多边形
'street_address', //字符串类型;表示精确的街道地址
'route', //字符串类型;表示已命名的路线(例如“US 101”)
'intersection', //字符串类型;表示主要交叉路口,通常是两条主要道路的交叉路口
'country', //字符串类型;表示国家政治实体,通常是由地理编码器返回的最高级别类型
'administrative_area_level_1', //字符串类型;表示国家/地区级别以下的一级行政实体。在美国,这种行政级别就是州
'administrative_area_level_2', //字符串类型;表示国家/地区级别以下的二级行政实体。在美国,这种行政级别就是县
'administrative_area_level_3', //字符串类型;表示国家/地区级别以下的三级行政实体。此类型表示较小的行政区划单位
'administrative_area_level_4', //字符串类型;表示国家/地区级别以下的四级行政实体。此类型表示较小的行政区划单位
'administrative_area_level_5', //字符串类型;表示国家/地区级别以下的五级行政实体。此类型表示较小的行政区划单位
'colloquial_area', //字符串类型;表示实体的常用替代名称
'ward', //字符串类型;表示一种特定的日本行政区划类型,以便于区分某个日本地址中的多个行政区划组成部分
'sublocality', //字符串类型;表示 locality 以下的一级行政实体
'neighborhood', //字符串类型;表示已命名的街区
'premise', //字符串类型;表示已命名的位置,通常是具有常见名称的一栋或一群建筑物
'subpremise', //字符串类型;表示指定位置以下的一级实体,通常是同名建筑群中的单个建筑物
'postal_code', //字符串类型;表示邮政编码,用于国内的地址邮寄
'natural_feature', //字符串类型;表示著名的自然景观
'airport', //字符串类型;表示机场
'park', //字符串类型;表示已命名的公园
'point_of_interest' //字符串类型;表示已命名的景点。通常,这些“景点”是不容易归入其他类别的著名地方实体,如“帝国大厦”或“自由女神像”
]
}
],
routes : [ //数组类型;其中提供了从起点至目的地的路线
{
bounds : { //JSON对象;包含 overview_polyline 的视口边界框
northeast : {
lat : 43.692758,
lng : -79.590273
},
southwest : {
lat : 43.5942889,
lng : -79.769256
}
},
copyrights : '地图数据 ©2017 GS(2011)6020 Google', //字符串类型;包含需要为该路线显示的版权文本。您必须自行处理和显示该信息
legs : [ //数组类型;包含给定路线内某一段(两个位置之间)的相关信息。指定的每个路径点或目的地都有单独的段与之对应。(不含路径点的路线在 legs 数组内将只包含一个段。)每一段都包含一系列分段
{
arrival_time : { //JSON对象;其中包含此路程的预计到达时间。该属性只针对公交路线返回
text : '上午6:30', //字符串类型;以字符串形式指定的时间。时间以公共交通车站的时区显示
time_zone : 'America/Toronto',//字符串类型;包含该站的时区
value : 1506767400 //数字类型;以 JavaScript Date 对象指定的时间
},
departure_time : { //JSON对象;此路程的预计出发时间。只会为公共交通路线提供 departure_time
text : '', //字符串类型;以字符串形式指定的时间。时间以公共交通车站的时区显示
time_zone : '', //字符串类型;包含该站的时区
value : //数字类型;以 JavaScript Date 对象指定的时间
},
distance : { //JSON对象;表示该段覆盖的总距离
text : '29.1 公里', //字符串类型;包含可人工读取的距离值,以起点处使用的单位显示
value : 29104 //数字类型;表示距离(以米为单位)
},
duration : { //JSON对象;表示该段的总持续时间
text : '1 小时 45 分钟', //字符串类型;其中包含以可人工读取形式表示的持续时间
value : 6300 //数字类型;表示持续时间(以秒为单位)
},
end_address : '加拿大安大略省布兰普顿', //字符串类型;包含通过对该段的 end_location 进行反向地理编码所获得的可人工读取地址(通常是街道地址)
end_location : { //JSON对象;包含该段给定目的地的纬度/经度坐标
lat : 43.6869103, //数字类型;纬度
lng : -79.7647153 //数字类型;经度
},
start_address : '加拿大安大略省多伦多', //字符串类型;包含通过对该段的 start_location 进行反向地理编码所获得的可人工读取地址(通常是街道地址)
start_location : { //JSON对象;包含该段起点的纬度/经度坐标
lat :, //数字类型;纬度
lng : //数字类型;经度
},
steps : [ //数组类型;包含一系列分段,表示有关旅程段每个单独分段的信息
{
distance : { //JSON对象;包含从该分段至下一分段起点的覆盖距离
text : '11.2 公里',
value : 11201
},
duration : { //JSON对象;包含完成该分段至下一分段起点距离通常需要的时间
text : '20分钟',
value : 1200
},
end_location : { //JSON对象;包含该分段终点的位置
lat :,
lng :
},
html_instructions : '公交车 开往40 - Hamilton GO', //字符串类型;包含该分段的格式化指令,以 HTML 文本字符串形式呈现
polyline : { //JSON对象;其中包含一个 points 对象,用于储存以经过编码的折线形式表示的路段。该多段线是分段的近似(平滑)路径
points : '' //字符串类型;储存以经过编码的折线形式表示的路段
},
start_location : { //JSON对象;包含该分段起点的位置
lat :,
lng :
},
"steps":[ //数组类型;包含公共交通路线中步行或驾车分段的详细路线。只有在mode参数设置为“transit”时,才会出现分段。内部 steps 数组与 steps 的类型相同
],
transit_details : { //JSON对象;包含公共交通专属信息。只有在mode参数设置为“transit”时,才会返回该字段
arrival_stop : { //JSON对象;包含有关该部分旅程的到达车站信息
location : { //JSON对象;公共交通车站的位置
lat :,
lng :
},
name : 'Square One' //字符串类型;公共交通车站的名称
},
arrival_time : { //JSON对象;包含该段旅程的到达时间
text : '上午5:05', //字符串类型;以字符串形式指定的时间。时间以公共交通车站的时区显示
time_zone : 'America/ Toronto', //字符串类型;包含该站的时区
value : 1506762300 //数字类型;时间,以 Unix 时间或者协调世界时 1970 年 1 月 1 日午夜以来的秒数指定
},
departure_stop : { //JSON对象;包含有关该部分旅程的出发车站信息
location : { //JSON对象;公共交通车站的位置
lat : 43.672229,
lng : -79.593388
},
name : 'Renforth Dr At Convair Dr' //字符串类型;公共交通车站的名称
},
departure_time : { //JSON对象;包含该段旅程的出发时间
text : 上午4:45, //字符串类型;以字符串形式指定的时间。时间以公共交通车站的时区显示
time_zone : 'America/Toronto', //字符串类型;包含该站的时区
value : 1506761100 //数字类型;时间,以 Unix 时间或者协调世界时 1970 年 1 月 1 日午夜以来的秒数指定
},
headsign : '40 - Hamilton GO', //字符串类型;指定该线路的行进方向,即车辆或出发车站所标示的方向。这通常是终点站
line : { //JSON对象;包含有关该分段中所使用公共交通线路的信息
agencies : [ //数组类型;其中的每个对象都提供有关线路运营商的信息
{
name : 'GO Transit', //字符串类型;其中包含公交机构的名称
phone : '1 (888) 438-6646', //字符串类型;包含公共交通运营机构的电话号码
url : 'http://gotransit.com/' //字符串类型;其中包含公交机构的 URL
}
],
color : '#a11984', //字符串类型;包含该公共交通线路标牌中常用的颜色。颜色以十六进制字符串形式指定
name : 'Pearson Airport - Richmond Hill Service', //字符串类型;包含该公共交通线路的全名
short_name : '40', //字符串类型;包含该公共交通线路的简称。这通常是线路编号
text_color : '#ffffff', //字符串类型;其中包含该线路站牌上常用的文字颜色。颜色以十六进制字符串形式指定
vehicle : { //JSON对象;包含该线路使用的车辆类型
icon : '//maps.gstatic.com/mapfiles/transit/iw2/6/bus2.png', //字符串类型;包含与该车辆类型关联的图标的 URL
name : '公交车', //字符串类型;其中包含该线路上交通工具的名称
type : 'BUS' //字符串类型;包含在该线路上运行的车辆类型
}
},
num_stops : 3 //数字类型;包含该分段的车站数,计算到达站,不计算出发站
},
travel_mode : 'TRANSIT' //字符串类型;交通模式
},
],
traffic_speed_entry : [],
via_waypoint : []
}
],
overview_polyline : { //JSON对象;其中包含单个 points 对象,用于储存以经过编码的折线表示的路线。此折线是所生成路线的近似(平滑处理)路径
points : '' //字符串类型;用于储存以经过编码的折线表示的路线
},
summary : '', //字符串类型;包含包含简短的路线文本说明,适用于命名路线以及消除路线与备选路线的歧义
warnings : [ //数组类型;其中包含要在显示这些路线时显示的一组警告。您必须自行处理和显示这些警告
'步行路线正在测试中。 注意 – 此路线可能缺乏部分人行道信息。'
],
waypoint_order : [] //数组类型;用于指示所计算路线内所有路径点的顺序
}
],
available_travel_modes:[ //数组类型;包含一组可用的出行模式。如果请求指定出行 mode 但没有结果,将返回此字段。数组包含给定路径点集所在国家/地区可用的出行模式。如果一个或多个路径点为 via: 路径点,将不会返回此字段
'DRIVING',
'BICYCLING',
'WALKING'
],
status : 'OK' //字符串类型;
//取值范围:
//OK:路径规划成功
//NOT_FOUND:表示请求的起点、目的地中指定的至少其中一个位置无法接受地理编码
//ZERO_RESULTS:表示在起点与目的地之间未找到路线
//INVALID_REQUEST:表示提供的请求无效。这一状态的常见原因包括参数或参数值无效
//OVER_QUERY_LIMIT:表示服务在允许的时段内从您的应用收到的请求数量过多
//REQUEST_DENIED:表示服务拒绝您的应用使用路线服务
//UNKNOWN_ERROR:表示由于服务器发生错误而无法处理路线请求。如果您重试一次,请求可能会成功
}
示例代码
var GoogleMap = api.require('googleMap');
GoogleMap.searchRoute({
id:1,
origin: 'Toronto',
destination: 'Brampton',
},function(ret, err){
api.alert({
msg: JSON.stringify(ret)
});
});
可用性
iOS系统,Android系统
可提供的1.0.0及更高版本
drawRoute
在地图上显示指定路线,调用本接口前,必须保证已经调用过接口 open 和 searchRoute
drawRoute({params})
params
id:
- 类型:数字
- 描述:路线 id (searchRoute 时传的 id),removeRoute 时使用此 id 移除路线
index:
- 类型:数字类型
- 描述:(可选项)路线方案的索引,在 searchRoute 时返回的多个路线方案组成的数组中的索引
- 默认值:0
styles:
- 类型:JSON对象
- 描述:路线样式设置
- 内部字段:
{
width: 3, //(可选项)数字类型;绘制路线的宽度;默认:3
color: '#00868B' //(可选项)字符串类型;绘制路线的颜色,支持 rgb、rgba、#;默认:#00868B
}
示例代码
var GoogleMap = api.require('googleMap');
GoogleMap.drawRoute({
id:1
});
可用性
iOS系统,Android系统
可提供的1.0.0及更高版本
removeRoute
移除指定 id ,指定索引的路线
removeRoute({params})
params
ids:
- 类型:数组
- 描述:(可选项)所要移除的 id(数字)和路径索引组成的数组
- 默认值:不传则删除所有绘制的路径
- 内部字段:
{
id:1, //数字类型;路线 id
indexs:[0] //可选,数组类型;默认:不传则删除id下所有的路径
}
示例代码
var GoogleMap = api.require('googleMap');
GoogleMap.removeRoute({
ids:[
{
id:1,
indexs:[0]
}
]
});
可用性
iOS系统,Android系统
可提供的1.0.0及更高版本
addLine
在地图上添加折线
addLine({params})
params
geodesic
- 类型:布尔
- 描述:何时true,将此折线边缘渲染为测地线。测地线段沿着地球表面沿着最短路径行进,并且可以在具有墨卡托投影的地图上显示为曲线。非测地线段在地图上绘制为直线。
- 默认:false
styles:
- 类型:JSON 对象
- 描述:(可选项)折线的样式
- 内部字段:
{
borderColor: '#000', //(可选项)字符串类型;折线的颜色,支持rgb、rgba、#;默认值:'#000'
borderWidth: 3 //(可选项)数字类型;折线的宽度,默认:1
}
points:
- 类型:数组
- 描述:折线的多个点组成的数组
- 内部字段:
[{
lon: 116.297, //数字类型;经度
lat: 40.109 //数字类型;纬度
}]
示例代码
var GoogleMap = api.require('googleMap');
GoogleMap.addLine({
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.8及更高版本
addPolygon
在地图上添加多边形
addPolygon({params})
params
geodesic
- 类型:布尔
- 描述:何时true,将此折线边缘渲染为测地线。测地线段沿着地球表面沿着最短路径行进,并且可以在具有墨卡托投影的地图上显示为曲线。非测地线段在地图上绘制为直线。
- 默认:false
styles:
- 类型:JSON 对象
- 描述:(可选项)多边形的样式
- 内部字段:
{
borderColor: '#000', //(可选项)字符串类型;多边形的边框颜色,支持rgb、rgba、#;默认:'#000'
fillColor: '#000', //(可选项)字符串类型;多边形的填充色,支持rgb、rgba、#;默认:'#000'
borderWidth: 3 //(可选项)数字类型;多边形的边框宽度,默认:1
}
points:
- 类型:数组
- 描述:多边形的各个点组成的数组
- 内部字段:
[{
lon: 116.297, //数字类型;经度
lat: 40.109 //数字类型;纬度
}]
示例代码
var GoogleMap = api.require('googleMap');
GoogleMap.addPolygon({
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.8及更高版本
addCircle
在地图上添加圆形
addCircle({params})
params
center:
- 类型:JSON 对象
- 描述:圆形中心点的经纬度
- 内部字段:
{
lon: 116.297, //数字类型;圆形中心点的经度
lat: 40.109 //数字类型;圆形中心点的纬度
}
radius:
- 类型:数字
- 描述:圆形的半径
styles:
- 类型:JSON 对象
- 描述:(可选项)圆形的样式
- 内部字段:
{
borderColor: '#000', //(可选项)字符串类型;圆形的边框颜色,支持rgb、rgba、#;默认:'#000'
fillColor: '#000', //(可选项)字符串类型;圆形的填充色,支持rgb、rgba、#;默认:'#000'
borderWidth: 3 //(可选项)数字类型;圆形的边框宽度,
}
示例代码
var GoogleMap = api.require('googleMap');
GoogleMap.addCircle({
center: {
lon: 116.39432327,
lat: 39.98963192
},
radius: 500,
styles: {
borderColor: '#FF0000',
borderWidth: 3,
fillColor: '#0000ff'
}
});
可用性
iOS系统,Android系统
可提供的1.0.8及更高版本
addGroundOverlay
在地图上添加地面叠加层,地面叠加层是地图上与纬度/经度坐标相关联的叠加层,因此当您拖动或缩放地图时它们会移动
addGroundOverlay({params})
params
southWest(IOS):
- 类型:JSON 对象
- 描述:西南
- 内部字段:
{
lon: 116.297, //数字类型;经度
lat: 40.109 //数字类型;纬度
}
northEast(IOS):
- 类型:JSON 对象
- 描述:东北
- 内部字段:
{
lon: 116.297, //数字类型;经度
lat: 40.109 //数字类型;纬度
}
Pot(android):
- 类型:JSON 对象
- 描述:添加处的坐标点
- 内部字段:
{
lon: 116.297, //数字类型;经度
lat: 40.109 //数字类型;纬度
}
size(android):
- 类型:JSON 对象
- 描述:添加物的宽高
- 内部字段:
{
width: 8600, //数字类型;宽度
height: 6500 //数字类型;高度
}
icon:
- 类型:字符
- 描述:标题图标路径,仅支持fs、widget
bearing(IOS):
- 类型:数字
- 描述:(可选项)地面覆盖物的方位,以度为单位。默认值0指向这个地面覆盖层,沿着地球的正常Y轴向上/向下
- 默认:0
opacity(IOS):
- 类型:数字
- 描述:(可选项)透明度,取值范围0-1
- 默认:1
示例代码
可用性
iOS系统,Android系统
可提供的1.0.8及更高版本
removeLayer
清除图层(Android清除的是addGroundOverlay添加的数据 )
removeLayer()
var GoogleMap = api.require('googleMap');
可用性
iOS系统,Android系统
可提供的1.0.8及更高版本