uni-app中uni.chooseLocation打开默认是北京?

发布于 1周前 作者 songsunli 来自 Uni-App

uni-app中uni.chooseLocation打开默认是北京?
在未获得位置授权之前调用,打开地图默认位置会是北京,这个怎么修改,在国外的项目,不能默认显示北京啊。app平台,用的谷歌地图。

还有就是谷歌地图不支持搜索吗,打开后搜索框输入文字后一直转圈。

高德地图打开后,搜索也不能用,报错:reportJSException >>>>>> exception function:WEEX_CALL_JAVASCRIPT, exception:JavaScript execute error!Uncaught TypeError: Cannot read property ‘pageIndex’ of null at (/__uniappchooselocation.js.nvue:1:25432)


### 开发环境及配置

| 项目创建方式 | 版本号 |
| --- | --- |
| 未提供具体信息 | 未提供具体信息 |


注意:由于原文中并未提及具体的开发环境、版本号和项目创建方式等信息,因此表格中显示“未提供具体信息”。

5 回复

latitude和longitude配上试试呢


这两个只在微信小程序和h5下管用

回复 5***@qq.com: 是给定位权限关了导致的么?要不行,估计就只能再加个keyword

问题有没解决同样的问题

在uni-app中,uni.chooseLocation API 用于调用原生地图选择位置,但它默认打开的位置(如北京)是由平台或用户设备设置决定的,而不是开发者可以直接控制的。不过,你可以通过一些方法来优化用户体验,比如在使用 uni.chooseLocation 之前提示用户,或者在用户选择位置后根据需要进行处理。

虽然无法直接设置默认打开的城市,但你可以通过获取用户当前位置来作为初始值,或者引导用户选择一个大致区域,然后再调用 uni.chooseLocation。下面是一个示例代码,展示如何在调用 uni.chooseLocation 前获取用户当前位置,并在用户取消选择时给出提示:

// 获取用户当前位置作为初始参考(注意:需要用户授权地理位置权限)
uni.getLocation({
    type: 'gcj02', // 返回可以用于 `uni.openLocation` 的经纬度
    success: function (location) {
        // 保存当前位置信息
        const currentLatitude = location.latitude;
        const currentLongitude = location.longitude;

        // 调用 chooseLocation,虽然不能直接设置默认城市,但可以作为后续处理的参考
        uni.chooseLocation({
            success: function (res) {
                // 用户选择位置后的回调
                console.log('用户选择的位置:', res);
                // 可以根据 res.name, res.address, res.latitude, res.longitude 进行后续处理
            },
            fail: function (err) {
                // 用户取消选择位置
                uni.showToast({
                    title: '您取消了位置选择',
                    icon: 'none'
                });
            }
        });
    },
    fail: function (err) {
        // 获取位置失败,可能是用户拒绝授权
        uni.showToast({
            title: '获取位置失败,请检查权限设置',
            icon: 'none'
        });
    }
});

在这个例子中,我们首先尝试获取用户的当前位置,如果成功,则保存经纬度信息(虽然这些信息在 uni.chooseLocation 中不能直接使用来设置默认城市,但可以作为后续逻辑处理的参考)。然后调用 uni.chooseLocation 让用户选择一个位置。如果用户取消了选择,我们会显示一个提示。

请注意,获取用户位置需要用户授权,如果用户拒绝授权,你应该妥善处理这种情况,比如提示用户开启权限或者提供一个备用方案。此外,由于 uni.chooseLocation 的行为可能受平台差异影响,建议在多个平台上进行测试以确保用户体验的一致性。

回到顶部