// 获取当前位置
getPosition: function() {
  this.GetLocation(function(res) {
    if (res) {
      this.longitude = res.longitude;// 经度
      this.latitude = res.latitude;//纬度
      this.address = res.address;//五级地址
    }
  })
}, GetLocation:function(callBack) {
  //#ifdef APP-PLUS
  let system = uni.getSystemInfoSync() //获取系统信息
  if (system.platform == "android" || system.platform == "Android") {
    var context = plus.android.importClass("android.content.Context");
    var locationManager = plus.android.importClass("android.location.LocationManager");
    var main = plus.android.runtimeMainActivity();
    var mainSvr = main.getSystemService(context.LOCATION_SERVICE);
    var gpsProvider = mainSvr.isProviderEnabled(locationManager.GPS_PROVIDER); //检查是否开启了GPS
    if (!gpsProvider) {
      uni.showModal({
        title: '提示',
        content: '请打开手机定位服务权限',
        showCancel: false,
        success: res => {
          if (!gpsProvider) {
            var Intent = plus.android.importClass("android.content.Intent");
            var Settings = plus.android.importClass("android.provider.Settings");
            var new_Intent = new Intent(Settings.ACTIVE_LOCATION_SOURCE_SETTINGS);
            main.startActivity(new_Intent);
          }
        },
      });
    } else {
      uni.showLoading({
        title:'定位中...'
      })
      uni.getLocation({
        type: 'wgs84',
        altitude: false,
        geocode: true,
        success: (res) => {
          uni.hideLoading();
          // console.log('定位结果:' + JSON.stringify(res));
          var addressList = res.address;
          var address = addressList.province + '' + addressList.city + '' + addressList.district + '' + addressList.street + '' + addressList.streetNum;
          console.log(JSON.stringify(res));
          var location = {
            longitude: res.longitude,
            latitude: res.latitude,
            address: address,
            type: res.type
          };
          callBack(location);
        },
        fail: (err) => {
          //这部分不需要可以删除
          uni.hideLoading();
          // #ifdef MP-BAIDU
          if (err.errCode === 202 || err.errCode === 10003) { // 202模拟器 10003真机 user deny
            // this.showConfirm();
          }
          // #endif
          // #ifndef MP-BAIDU
          if (err.errMsg.indexOf("auth deny") >= 0) {
            uni.showToast({
              title: "访问位置被拒绝"
            })
          } else {
            uni.showToast({
              title: err.errMsg
            })
          }
          // #endif
          return callBack(err.errMsg);
        }
      })
    }
  }
  //#endif
}

HBuilder uniapp手机定位的更多相关文章

  1. Hbuilder获取手机当前地理位置的天气

    前言:前面一段时间,公司项目里有一个需求 是获取当前手机地理位置当天的天气情况  将实时天气信息提供给客户.在网上搜索资料时候,发现知识很零碎,自己实现以后整理出来,方便于各位的学习与使用. 一.获取 ...

  2. 手机自带的显示基站命令(android手机定位,iphone基站定位)

    手机自带的显示基站命令(安卓手机定位,苹果手机基站定位) 分类: 通信和网络2012-02-07 17:48 1734人阅读 评论(0) 收藏 举报 手机htciphone中兴三星网络 安卓手机自带快 ...

  3. iOS修改手机定位(非越狱任意位置)

    利用开发者的一些调试功能,我们可以修改非越狱的苹果手机定位,模拟任意位置. 经测试,此方法仅限开发者调试使用,并不能长时间修改手机定位. 1. 首先需要了解一些坐标系的知识 iOS,原生坐标系为 WG ...

  4. android132 360 05 手机定位

    .网络定位:根据ip地址定位,根据ip地址在实际地址数据库中查询实际地址. 缺点:动态ip导致地址不准确. .基站定位:3个基站就可以确定实际位置,定位范围是几百米到几公里不等. .GPS定位:美国卫 ...

  5. 基于h5+ajax实现的手机定位

    因朋友需要,之前看了下关于h5的手机定位,目前写了个demo在这里贴出来,感兴趣的朋友可以看一下. 目前的版本只是demo,仍有几个问题需要完善一下,问题如下: 1,如何将经纬度等数据发送到被定位人看 ...

  6. Android手机定位技术的发展

    基于以下三种方式的移动位置:1. 网络位置 :2. 基站定位. 3. GPS定位 1 网络位置 前提是连接到网络:Wifi.3G.2G 到达IP址  比如:彩虹版QQ,珊瑚虫版QQ,就有一个功能显示对 ...

  7. [android] 手机卫士手机定位的原理

    手机定位的三种方式:网络定位,基站定位,GPS定位 网络定位,手机连上wifi 2g 3g的时候,手机会有一个ip,误差很大 基站定位,精确度与基站的多少有关,几十米到几公里的误差 GPS定位,至少需 ...

  8. 改Android手机定位位置

    手机定位方法 1,gps等卫星定位,如美国的gps,欧洲的伽利略,中国的北斗等,通过至少三颗卫星,用三角定位和时间等算法,计算出设备的经纬度,到地图上找到这个经纬度的地名 2,移动运营商基站定位,通过 ...

  9. Android 获取手机信息,设置权限,申请权限,查询联系人,获取手机定位信息

    Android 获取手机信息,设置权限,申请权限,查询联系人,获取手机定位信息 本文目录: 获取手机信息 设置权限 申请权限 查询联系人 获取手机定位信息 调用高德地图,设置显示2个坐标点的位置,以及 ...

  10. 【HBuilder】手机App推送至Apple App Store过程

    一.前言        最近由于公司同事离职,顶替这位同事从事手机App的研发工作,BIM数据平台部门采用的是HBuilder作为手机App的制作环境.本篇介绍我是如何将HBuilder的Releas ...

随机推荐

  1. 日常开发记录-this.$message,this.$prompt,交换弹窗确定和取消按钮的位置,确定在左,取消在右

    代码: <template> <el-button type="text" @click="open">点击打开 Message Box ...

  2. lua-table面向对象

    --使用table封装面向对象beauty={name = " "}--封装对象方法function beauty.init(self, name)print("十八年前 ...

  3. CDO学习1 CDO简介

    参考自如下网站 http://www.ceda.ac.uk/static/media/uploads/ncas-reading-2015/cdo.pdf 介绍 一个有几百种操作符的单独命令 CDO受N ...

  4. 【Windows】IP 地址变为 169.254.x.x 的解决方法

    最近每次开机 IP 地址都会自动跳至 169.254.x.x 段,连接不上网络,设置了固定 IP 也会跳段.因此找到以下解决方法: 『IP地址变成169.254.x.x 和固定ip两个IP地址的解决办 ...

  5. 【Monkey】Monkey命令与使用

    Monkey 通过Monkey程序模拟用户触摸屏幕.滑动Trackball. 按键等操作来对设备上的程序进行压力测试,检测程序多久的时间会发生异常,Monkey 主要用于Android 的压力测试  ...

  6. error NU1301: Failed to retrieve information about 'volo.abp.cli' from remote source 'https://www.myget.org/feed/Packages/aspnetcoremodules/FindPackagesById()?id='volo.abp.cli'&semVerLevel=2.0.0'.

    today i come across an error when install the abp from the command line after refer to https://githu ...

  7. AngularJS UI

    1, angular ui 自定义弹框 <script type="text/ng-template" id="stackedModal.html"> ...

  8. json extionsion

    using System.Collections.Generic;using Newtonsoft.Json;using Newtonsoft.Json.Converters; namespace D ...

  9. Uncaught ReferenceError: Vue is not defined(之一)

    报错信息 Uncaught ReferenceError- Vue is not defined 报错代码示例 <body> <div id="app"> ...

  10. YYYY-MM-dd

    Calendar calendar = Calendar.getInstance();  calendar.set(2019, Calendar.DECEMBER, 31); Date strDate ...