HarmonyOS鸿蒙Next中请求定位的数据怎么取不出来?

HarmonyOS鸿蒙Next中请求定位的数据怎么取不出来?

import geolocation from '@system.geolocation';

export default {
    data: {
        title: "uuu"
    },
    onInit() {
        var jingdu, weidu, falsecode=0, falseres;
        geolocation.getLocation({
            success: function(data) {
                jingdu = "data1.latitude";
            },
            fail: function(data, code) {
                falsecode = code;
                console.log('fail to get location. code:' + code + ', data:' + data);
            },
        });
        var mytitle=this.title;
       this.title=falsecode;
       // this.title=geolocation.getSupportedCoordTypes();
       // this.title = this.$t('strings.world');
        console.info('AceApplication onInit');
    }
}

红色部分,单步调试看到在请求失败的返回里有数值,跳出请求后,就没有值了,以前用js时都可以的,麻烦懂得朋友指导一下,非常感谢。


更多关于HarmonyOS鸿蒙Next中请求定位的数据怎么取不出来?的实战教程也可以访问 https://www.itying.com/category-93-b0.html

17 回复
楼主你好,可以通过设置全局变量方式获取,因为获取定位信息会有一定延时,所以我这边用到了定时器去打印位置信息:

```javascript
import geolocation from '[@system](/user/system).geolocation';
var a;
export default {
    onInit() {
        this.getLocation();
        this.setTimer();
    },
    getLocation() {
        geolocation.getLocation({
            success: function(data) {
                a = data.longitude;
                console.log('success get location data. latitude:' + data.latitude + "  longitude " + data.longitude);
            },
            fail: function(data, code) {
                console.log('fail to get location. code:' + code + ', data:' + data);
            },
        });
    },
    setTimer() {
        console.log("进入定时器")
        let _this = this
        this.progressTimer = setInterval(function() {
            console.log("定时器---------:")
            console.log(a);
            clearInterval(_this.progressTimer)
        }, 1000)
    }
}

更多关于HarmonyOS鸿蒙Next中请求定位的数据怎么取不出来?的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


谢谢,我回去试试。

除了java能用外,js和ets在使用位置功能时各种蛋痛,几乎没有成功过,偶尔使用远程终端,调试时能成功一二次,完全没法用。

3.0版也是问题不断,hilog,console全都不显示,想看个中间结果,都没可能。

JS是各种不显示,非常多的情况是,不知道哪里出问题,也不提示,也不崩溃,就是不动

感觉API4之后的版本,就是套了个漂亮的外衣,里面啥都不灵,何况外衣上也是到处是洞

找HarmonyOS工作还需要会Flutter的哦,有需要Flutter教程的可以学学大地老师的教程,很不错,B站免费学的哦:BV1S4411E7LY/?p=17

等着懂的朋友,回复一下,谢谢。

您好,位置数据可以发送我们邮箱:forum@huawei.com,我们会安排技术给您处理的,谢谢。

楼主你好,请求定位的数据,可以通过如下方式获取,如果还有其他问题,可以参考官方文档https://developer.harmonyos.com/cn/docs/documentation/doc-guides/device-location-info-0000000000031900 console不需要设置即可打印

import geolocation from '@system.geolocation';

export default {
    onInit() {
        this.getLocation();
    },
    getLocation() {
        geolocation.getLocation({
            success: function(data) {
                console.log('success get location data. latitude:' + data.latitude + "  longitude " + data.longitude);
            },
            fail: function(data, code) {
                console.log('fail to get location. code:' + code + ', data:' + data);
            },
        });
    },
}

感谢回复,我这里可以得到位置数据,但是没有办法将得到的位置数据传出来,在别的地方使用。比如,传给全局变量,以便在别的地方使用。

仿真终端是手机,无法显示console输出信息。

您好,位置数据可以发送我们邮箱:forum@huawei.com,谢谢。

HarmonyOS的流畅动画和过渡效果让操作更加顺畅,体验极佳。

麻烦各位帮助一下,鸿蒙js里的全局变量怎么操作,怎么查看程序调试的输出信息,console不显示。

鸿蒙开发的调试问题,console不显示,应该怎么设置?

欢迎开发小伙伴们进来帮帮楼主

在HarmonyOS鸿蒙Next中,请求定位数据无法取出可能是由于以下原因:

  1. 权限问题:确保应用已获取ohos.permission.LOCATION权限,并在config.json中正确配置。用户需在设备设置中授权定位权限。

  2. 定位服务未开启:检查设备的定位服务是否已开启。若未开启,定位数据将无法获取。

  3. 定位模式设置不当:鸿蒙系统支持多种定位模式(如高精度、省电等),确保选择了合适的定位模式。

  4. 定位请求未正确初始化:使用geoLocationManager进行定位请求时,确保已正确初始化并调用startLocating方法。

  5. 回调函数未实现:定位数据通过回调函数返回,确保已实现LocationCallback接口,并在onLocationReport中处理数据。

  6. 设备硬件问题:部分设备可能因硬件问题无法获取定位数据,建议在其他设备上测试。

  7. 系统版本兼容性:确保使用的鸿蒙系统版本支持定位功能,并检查是否有相关更新。

  8. 网络问题:若使用网络定位,确保设备已连接网络且信号良好。

  9. 定位超时:定位请求可能因超时未返回数据,检查超时设置是否合理。

  10. 日志排查:通过查看系统日志,定位具体错误信息,进一步排查问题。

若以上步骤均无误,仍无法获取定位数据,建议检查代码实现细节,确保符合鸿蒙开发规范。

在HarmonyOS鸿蒙Next中,若无法获取定位数据,可能原因包括:

  1. 未正确配置权限,需在config.json中添加ohos.permission.LOCATION权限;
  2. 未开启设备定位功能,需在系统设置中启用;
  3. 定位服务未初始化,需调用geolocation模块的getCurrentLocation方法并确保回调函数正确实现。

检查以上步骤,确保定位服务正常启用。

回到顶部