open close show hide setType setLocationButton setCompassButton setTraffic setBuildings setRect getLocation getLocationForAPI stopLocation stopLocationForAPI getCoordsFromName getNameFromCoords getDistance showUserLocation setCenter getCenter getZoomExtremity setZoomLevel getZoomLevel addEventListener removeEventListener
addAnnotations addAnnotationListener getAnnotationCoords setAnnotationCoords setAnnotationIcon removeAnnotations setBubble
谷歌地图简介
谷歌地图 是 Google 公司提供的电子地图服务,包括局部详细的卫星照片。该插件可以打开关闭地图视图,获取当前定位,坐标与地理位置的转换,添加标注,监听地图事件等功能。 使用此插件,手机上必须安装Google Play服务、Googel Play Store。
使用此插件之前必须先配置 config 文件,配置方法如下:
同一个 App 需要同时支持 iOS 和 Android 平台,必须单独申请各自的 apiKey,并同时配置在 config 文件中
支持 android 平台时的配置方法:
<meta-data
name="com.google.android.geo.API_KEY"
value="AIzaSyC-bJcAa1ZCr5Pudsuky16f2vk3DyRTn54" />
<feature name="googleMap">
<param name="android_api_key" value="AIzaSyAPLwmxjyqqXjJ6g_5MSra5mzKElqIUZsz" />
</feature>
<meta-data
name="com.google.android.gms.version"
value="11020000" />
value是在谷歌申请的apiKey,如果有ios平台,android_api_key应该和ios的ios_api_key配置在一个节点(googleMap)下面
注:从1.0.4版本开始需要配置com.google.android.gms.version,其中value值固定(11020000),如果和googleAnalytics、googlePush插件同时编译,可以共用一个
支持 iOS 平台时的配置方法:
<feature name="googleMap">
<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 --- 从 Google API Console 中获取 API 密钥
ios_directions_key申请方法:获取 API 密钥
注意:请确保您的 ak 正确性,否则地图加载异常,在 ios 平台最低适配版本为 iOS 14.0
使用本插件定位相关接口获取的坐标数据是 GPS 坐标系,若通过此数据显示在中国区地图上需转换为火星坐标,否则会有很大偏差。若显示在国外区域地图上则不用转换,因为谷歌地图中国区域跟外国区域使用的坐标系不一样。关于地图坐标系的知识可自行查阅相关资料。
打开谷歌地图
open({params}, callback(ret))
rect:
{
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:
showUserLocation:
fixedOn:
fixed:
ret:
{
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) {
api.alert({msg: JSON.stringify(ret)});
}
});
iOS系统,Android系统
可提供的1.0.0及更高版本
关闭谷歌地图
close()
var GoogleMap = api.require('googleMap');
GoogleMap.close();
iOS系统,Android系统
可提供的1.0.0及更高版本
显示谷歌地图
show()
var GoogleMap = api.require('googleMap');
GoogleMap.show();
iOS系统,Android系统
可提供的1.0.0及更高版本
隐藏谷歌地图
hide()
var GoogleMap = api.require('googleMap');
GoogleMap.hide();
iOS系统,Android系统
可提供的1.0.0及更高版本
设置地图类型
setType({params})
type:
var GoogleMap = api.require('googleMap');
GoogleMap.setType({
type: 'setellite'
});
iOS系统,Android系统
可提供的1.0.0及更高版本
设置地图是否显示交通路况
setTraffic({params})
traffic:
var GoogleMap = api.require('googleMap');
GoogleMap.setTraffic({
traffic: true
});
iOS系统,Android系统
可提供的1.0.0及更高版本
设置地图是否显示定位按钮
setLocationButton({params})
locationButton:
var GoogleMap = api.require('googleMap');
GoogleMap.setLocationButton({
locationButton: true
});
iOS系统
可提供的1.0.0及更高版本
设置地图是否显示指南针
setCompassButton({params})
compassButton:
var GoogleMap = api.require('googleMap');
GoogleMap.setCompassButton({
compassButton: true
});
iOS系统,Android系统
可提供的1.0.0及更高版本
设置地图是否显示建筑
setBuildings({params})
buildings:
var GoogleMap = api.require('googleMap');
GoogleMap.setBuildings({
buildings: true
});
iOS系统,Android系统
可提供的1.0.0及更高版本
重设地图的显示区域
setRect({params})
rect:
{
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及更高版本
获取当前位置信息,若要支持后台定位需配置 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))
autoStop:
locationType:
accuracy:
filter:
ret:
{
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) {
api.alert({msg: JSON.stringify(ret)});
}
});
iOS系统,Android系统
可提供的1.0.0及更高版本
获取当前位置信息,若要支持后台定位需配置 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))
autoStop:
ret:
{
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) {
api.alert({msg: JSON.stringify(ret)});
}
});
iOS系统,Android系统
可提供的 1.0.3 及更高版本
停止定位
stopLocation()
var GoogleMap = api.require('googleMap');
GoogleMap.stopLocation();
iOS系统,Android系统
可提供的1.0.0及更高版本
停止定位
stopLocationForAPI()
var GoogleMap = api.require('googleMap');
GoogleMap.stopLocationForAPI();
Android系统
可提供的1.0.3及更高版本
根据地址查找经纬度,无需调用 open 接口即可使用
注意:
在 ios 平台谷歌地图不支持地理编码,需要自己构造一个网络请求,然后自己做相应处理。谷歌的地理编码用到的是 Google Maps Geocoding API 首先需要去谷歌的开发者后台激活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))
city:
address:
ret:
{
status: true, //布尔型;true||false
lon: 116.351, //数字类型;地址所在经度
lat: 39.283 //数字类型;地址所在纬度
}
err:
{
code: 1 //数字类型;错误码
msg: //字符串类型;错误描述
}
var GoogleMap = api.require('googleMap');
GoogleMap.getCoordsFromName({
city: '北京',
address: '天安门'
}, function(ret, err) {
if (ret.status) {
api.alert({msg: JSON.stringify(ret)});
} else {
api.alert({msg: JSON.stringify(err)});
}
});
Android系统
可提供的1.0.0及更高版本
根据经纬度查找地址信息,无需调用 open 接口即可使用
getNameFromCoords({params}, callback(ret))
lon:
lat:
ret:
{
status: true, //布尔型;true||false,
addressLines:[] //数组类型;地址名称数组(仅支持Android)
state: '', //字符串类型;省份
city: '', //字符串类型;城市
district: '', //字符串类型;县区(仅支持ios)
thoroughfare: '', //字符串类型;社区
}
var GoogleMap = api.require('googleMap');
GoogleMap.getNameFromCoords({
lon: 116.384767,
lat: 39.989539
}, function(ret) {
if (ret.status) {
api.alert({msg: JSON.stringify(ret)});
}
});
iOS系统,Android系统
可提供的1.0.0及更高版本
获取地图两点之间的距离,无需调用 open 接口即可使用
getDistance({params}, callback(ret))
start:
{
lon: 106.486654, //数字类型;起点的经度
lat: 29.490295 //数字类型;起点的纬度
}
end:
{
lon: 106.581515, //数字类型;终点的经度
lat: 29.615467 //数字类型;终点的纬度
}
ret:
{
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) {
api.alert({msg: JSON.stringify(ret)});
}
});
iOS系统,Android系统
可提供的1.0.0及更高版本
是否在地图上显示用户位置
showUserLocation({params})
isShow:
var GoogleMap = api.require('googleMap');
GoogleMap.showUserLocation({
isShow: true
});
iOS系统,Android系统
可提供的1.0.0及更高版本
根据经纬度设置谷歌地图中心点
setCenter({params})
coords:
{
lon: 116.404, //(可选项)数字类型;设置中心点的经度
lat: 39.915 //(可选项)数字类型;设置中心点的纬度
}
animation:
var GoogleMap = api.require('googleMap');
GoogleMap.setCenter({
coords: {
lon: 116.404,
lat: 39.915
},
animation: false
});
iOS系统,Android系统
可提供的1.0.0及更高版本
获取谷歌地图中心点坐标
getCenter(callback(ret))
ret:
{
lon: 116.404, //数字类型;地图中心点的经度
lat: 39.915 //数字类型;地图中心点的纬度
}
var GoogleMap = api.require('googleMap');
GoogleMap.getCenter(function(ret) {
if (ret) {
api.alert({msg: JSON.stringify(ret)});
}
});
iOS系统,Android系统
可提供的1.0.0及更高版本
获取谷歌地图缩放最大、最小值
getZoomExtremity(callback(ret))
ret:
{
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({params})
level:
animation:
var GoogleMap = api.require('googleMap');
GoogleMap.setZoomLevel({
level: 10,
animation: true
});
iOS系统,Android系统
可提供的1.0.0及更高版本
获取地图缩放级别取值范围:1-21级(Android)、通过getZoomExtremity接口获得(iOS)
getZoomLevel(callback(ret))
ret:
{
level: 11 //数字类型;地图当前缩放级别
}
var GoogleMap = api.require('googleMap');
GoogleMap.getZoomLevel(function(ret) {
if (ret) {
api.alert({msg: JSON.stringify(ret)});
}
});
iOS系统,Android系统
可提供的1.0.0及更高版本
监听地图相关事件
addEventListener({params}, callback(ret))
name:
ret:
{
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) {
api.alert({msg: JSON.stringify(ret)});
}
});
iOS系统,Android系统
可提供的1.0.0及更高版本
停止监听地图相关事件
removeEventListener({params})
name:
var GoogleMap = api.require('googleMap');
GoogleMap.removeEventListener({
name: 'longPress'
});
iOS系统,Android系统
可提供的1.0.0及更高版本
在地图上添加标注信息,标注大小为 icons 内第一张图片大小的二分之一。图标中轴线的下边缘点为坐标基准点
addAnnotations({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:
icon:
draggable:
timeInterval:
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(callback(ret, err))
ret:
{
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({params}, callback(ret))
id:
ret:
{
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(callback(ret, err))
id:
lon:
lat:
var GoogleMap = api.require('googleMap');
GoogleMap.setAnnotationCoords({
id: 2,
lon: 116.39,
lat: 40.209
});
iOS系统,Android系统
可提供的1.0.0及更高版本
设置某个已添加标注的图标
setAnnotationIcon(callback(ret, err))
id:
icon:
var GoogleMap = api.require('googleMap');
GoogleMap.setAnnotationIcon({
id: 2,
icon : "widget://image/icon.png"
});
iOS系统,Android系统
可提供的1.0.0及更高版本
移除制定标注
removeAnnotations({params})
id:
var GoogleMap = api.require('googleMap');
GoogleMap.removeAnnotations({
id: [1]
});
iOS系统,Android系统
可提供的1.0.0及更高版本
设置某个已添加标注的气泡(点击标注弹出的信息窗口),
注意:若不调用本接口设置气泡,或 content 参数传空,则点击标注无气泡弹出。
setBubble({params})
id:
content:
{
title: '', //字符串类型;气泡的标题文本
titleSize:14, //数字类型;气泡标题字体大小;默认值:14
titleColor:"#ff000000", //字符串类型;气泡标题字体颜色;默认值:#ff000000
snippet: '' //字符串类型;显示在标题下面的文本。 超出信息窗口宽度的字符串将自动换成多行。 特别长的消息可能会被截断。
snippetSize:14, //数字类型;气泡副标题字体大小;默认值:14
snippetColor:"#ff7f7f7f", //字符串类型;气泡副标题字体颜色;默认值:#ff7f7f7f
}
caption:
img:"", //字符串类型;配图的路径地址;默认值:无
w:30, //数字类型;配图的宽;默认值:图片的宽
h:30 //数字类型;配图的高;默认值:图片的高
var GoogleMap = api.require('googleMap');
GoogleMap.setBubble({
id: 2,
content: {
title: '点击、长按我有回调',
snippet: '可在addAnnotationListener接口回调中监听点击、长按事件'
}
});
iOS系统,Android系统
可提供的1.0.0及更高版本
搜索路线方案,无需调用 open 接口即可使用
searchRoute({params}, callback(ret, err))
id:
origin:
destination:
mode:
waypoints:
alternatives:
avoid:
transit_mode:
ret:
{
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 文本字符串形式呈现
maneuver: 'turn-right', //字符串类型;行走指示
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及更高版本
在地图上显示指定路线,调用本接口前,必须保证已经调用过接口 open 和 searchRoute
drawRoute({params})
id:
index:
styles:
{
width: 3, //(可选项)数字类型;绘制路线的宽度;默认:3
color: '#00868B' //(可选项)字符串类型;绘制路线的颜色,支持 rgb、rgba、#;默认:#00868B
}
var GoogleMap = api.require('googleMap');
GoogleMap.drawRoute({
id:1
});
iOS系统,Android系统
可提供的1.0.0及更高版本
移除指定 id ,指定索引的路线
removeRoute({params})
ids:
{
id:1, //数字类型;路线 id
indexs:[0] //可选,数组类型;默认:不传则删除id下所有的路径
}
var GoogleMap = api.require('googleMap');
GoogleMap.removeRoute({
ids:[
{
id:1,
indexs:[0]
}
]
});
iOS系统,Android系统
可提供的1.0.0及更高版本
在地图上添加折线
addLine({params})
geodesic
styles:
{
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({params})
geodesic
styles:
{
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({params})
center:
{
lon: 116.297, //数字类型;圆形中心点的经度
lat: 40.109 //数字类型;圆形中心点的纬度
}
radius:
styles:
{
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({params})
southWest(IOS):
{
lon: 116.297, //数字类型;经度
lat: 40.109 //数字类型;纬度
}
northEast(IOS):
{
lon: 116.297, //数字类型;经度
lat: 40.109 //数字类型;纬度
}
Pot(android):
{
lon: 116.297, //数字类型;经度
lat: 40.109 //数字类型;纬度
}
size(android):
{
width: 8600, //数字类型;宽度
height: 6500 //数字类型;高度
}
icon:
bearing(IOS):
opacity(IOS):
var GoogleMap = api.require('googleMap');
GoogleMap.addGroundOverlay({
southWest: {
lon: 116.39432327,
lat: 39.98963192
},
northEast: {
lon: 116.39432327,
lat: 39.98963192
},
icon:'',
});
iOS系统,Android系统
可提供的1.0.8及更高版本
清除图层(Android清除的是addGroundOverlay添加的数据 )
removeLayer()
var GoogleMap = api.require('googleMap');
GoogleMap.removeLayer();
iOS系统,Android系统
可提供的1.0.8及更高版本
# **snapshot**截图
snapshot()
ret:
类型:JSON 对象
内部字段:
{
status:, //布尔类型,是否获取成功
base64Str:'', //字符串类型,图片base64字符串
}
err:
类型:JSON对象
内部字段:
{
msg:'' //字符串类型,错误信息
}
var GoogleMap = api.require('googleMap');
GoogleMap.snapshot(function(ret,err){
});
Android系统
可提供的1.1.4及更高版本