googleMap

来自于:开发者 立即使用

基础类

添加标注类

搜索类

概述

谷歌地图简介

谷歌地图 是 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" />

value是在谷歌申请的apiKey

支持 iOS 平台时的配置方法:

  • 名称:googleMap
  • 参数:ios_api_key,ios_directions_key
  • 配置示例:
  <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 8

模块接口

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:

  • 类型:布尔
  • 描述:(可选项)是否在地图上显示用户位置(仅支持ios)
  • 默认值: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系统,Android系统

可提供的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 接口即可使用

getLocation({params}, callback(ret))

params

autoStop:

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

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及更高版本

stopLocation

停止定位

stopLocation()

示例代码

var GoogleMap = api.require('googleMap');
GoogleMap.stopLocation();

可用性

iOS系统,Android系统

可提供的1.0.0及更高版本

getCoordsFromName

根据地址查找经纬度,无需调用 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))

params

city:

  • 类型:字符串
  • 描述:所要搜索的地址所在的城市,cityname(中文或中文全拼)、citycode、adcode

address:

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

callback(ret, err)

ret:

  • 类型:JSON 对象
  • 内部字段:
{
    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 对象
  • 内部字段:
{
    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) {
        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

是否在地图上显示用户位置(仅支持ios)

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:

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

示例代码

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

可用性

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: '',             //字符串类型;气泡的标题文本
    snippet: ''            //字符串类型;显示在标题下面的文本。 超出信息窗口宽度的字符串将自动换成多行。 特别长的消息可能会被截断。
}

示例代码

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:表示计算的路线应首选有轨电车和轻轨出行。
    • rail:表示计算的路线应首选火车、有轨电车、轻轨和地铁出行。它相当于train|tram|subway。

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 文本字符串形式呈现
                     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及更高版本

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及更高版本