• uni.getLocation(OBJECT)
  • uni.chooseLocation(OBJECT)

    uni.getLocation(OBJECT)

    获取当前的地理位置、速度。在微信小程序中,当用户离开应用后,此接口无法调用;当用户点击“显示在聊天顶部”时,此接口可继续调用。

    OBJECT 参数说明

    参数名类型必填说明平台差异说明
    typeString默认为 wgs84 返回 gps 坐标,gcj02 返回国测局坐标,可用于 uni.openLocation 的坐标
    altitudeBoolean传入 true 会返回高度信息,由于获取高度需要较高精确度,会减慢接口返回速度App和头条小程序不支持
    geocodeBoolean默认false,是否解析地址信息仅App平台支持
    successFunction接口调用成功的回调函数,返回内容详见返回参数说明。
    failFunction接口调用失败的回调函数
    completeFunction接口调用结束的回调函数(调用成功、失败都会执行)

    success 返回参数说明

    参数说明
    latitude纬度,浮点数,范围为-90~90,负数表示南纬
    longitude经度,浮点数,范围为-180~180,负数表示西经
    speed速度,浮点数,单位m/s
    accuracy位置的精确度
    altitude高度,单位 m
    verticalAccuracy垂直精度,单位 m(Android 无法获取,返回 0)
    horizontalAccuracy水平精度,单位 m
    address地址信息

    address 地址信息说明

    属性类型描述说明
    countryString国家如“中国”,如果无法获取此信息则返回undefined
    provinceString省份名称如“北京市”,如果无法获取此信息则返回undefined
    cityString城市名称如“北京市”,如果无法获取此信息则返回undefined
    districtString区(县)名称如“朝阳区”,如果无法获取此信息则返回undefined
    streetString街道信息如“酒仙桥路”,如果无法获取此信息则返回undefined
    streetNumString获取街道门牌号信息如“3号”,如果无法获取此信息则返回undefined
    poiNameStringPOI信息如“电子城.国际电子总部”,如果无法获取此信息则返回undefined
    postalCodeString邮政编码如“100016”,如果无法获取此信息则返回undefined
    cityCodeString城市代码如“010”,如果无法获取此信息则返回undefined

    示例

    1. uni.getLocation({
    2. type: 'wgs84',
    3. success: function (res) {
    4. console.log('当前位置的经度:' + res.longitude);
    5. console.log('当前位置的纬度:' + res.latitude);
    6. }
    7. });

    注意

    • H5:在较新的手机浏览器上,H5 端获取定位信息,要求部署在 https 服务上,本地预览(localhost)仍然可以使用 http 协议。
    • H5:无 GPS 模块的 PC 设备使用 Chrome 浏览器的时候,位置信息是连接谷歌服务器获取的,国内用户可能获取位置信息失败。
    • H5:微信公众号可使用微信js sdk,详见
    • App:Android由于谷歌服务被墙,想在国产手机上正常定位,需要向高德等三方服务商申请SDK资质,获取AppKey。云打包时需要在manifest的SDK配置中填写Appkey。在manifest可视化界面有详细申请指南。离线打包自行在原生工程中配置。
    • App:<map> 组件默认为国测局坐标gcj02,调用 uni.getLocation 返回结果传递给 <map> 组件时,需指定 type 为 gcj02。
    • App:持续定位方案:iOS端可以申请持续定位权限,参考。Android如果进程被杀,代码无法执行。可以使用unipush,通过服务器激活App,执行透传消息,让App启动然后采集位置。Android上,即使自己写原生插件做后台进程,也很容易被杀,unipush是更合适的方案
    • 小程序:api默认不返回详细地址中文描述。需要中文地址有2种方式:1、使用高德地图小程序sdk,在app和微信上都可以获得中文地址,参考。2、只考虑app,使用plus.geolocation也可以获取中文地址

    uni.chooseLocation(OBJECT)

    打开地图选择位置。

    平台差异说明

    5+AppH5微信小程序支付宝小程序百度小程序头条小程序
    x

    OBJECT 参数说明

    参数名类型必填说明
    keywordString搜索关键字,仅App平台支持
    successFunction接口调用成功的回调函数,返回内容详见返回参数说明。
    failFunction接口调用失败的回调函数(获取定位失败、用户取消等情况下触发)
    completeFunction接口调用结束的回调函数(调用成功、失败都会执行)

    注意

    • keyword参数,HBuilderX 2.1.4 以后版本支持
    • 因平台差异,如果SDK配置百度地图,需要设置keyword,才能显示相关地点success 返回参数说明
    参数说明
    name位置名称
    address详细地址
    latitude纬度,浮点数,范围为-90~90,负数表示南纬
    longitude经度,浮点数,范围为-180~180,负数表示西经

    示例

    1. uni.chooseLocation({
    2. success: function (res) {
    3. console.log('位置名称:' + res.name);
    4. console.log('详细地址:' + res.address);
    5. console.log('纬度:' + res.latitude);
    6. console.log('经度:' + res.longitude);
    7. }
    8. });

    注意

    • 不同端,使用地图选择时基于的底层地图引擎不一样,如微信小程序和H5是腾讯地图,App是高德地图,详见地图map组件的使用注意事项
    • 微信内置浏览器中可使用微信js sdk,详见
    • chooseLocation属于封装型API,开发者若觉得不够灵活,可自行基于原始的map组件进行封装
    • HBuilderX 1.9.2的Android平台chooseLocation失效,请更新到更高版本。

    发现错误?想参与编辑?在 GitHub 上编辑此页面!