uni-app中uni.chooseLocation搜索范围问题重开贴

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

uni-app中uni.chooseLocation搜索范围问题重开贴

uni.chooseLocation 搜索范围问题

2020年有人反馈,app上面搜索只能搜索附近2公里的地址,小程序可以搜全国,APP的啥时候解决,都马上2025了,还没解决

信息类型 信息内容
开发环境
版本号
项目创建
1 回复

在uni-app中使用uni.chooseLocation接口时,有时会遇到搜索范围(即定位精度和范围)的问题。这个接口允许用户在小程序中选择位置,但默认情况下,它的搜索范围可能并不总是符合你的应用需求。为了更精确地控制搜索范围,你可以结合其他API或参数设置来实现。

首先,uni.chooseLocation本身并没有直接提供设置搜索范围的参数。但是,你可以通过以下方式间接影响用户的搜索范围:

  1. 使用type参数uni.chooseLocationtype参数可以设置为wgs84(GPS坐标)或者gcj02(国测局坐标)。虽然这个参数不直接控制搜索范围,但它可以确保返回的坐标类型与你的地图服务匹配,从而避免坐标转换带来的误差。

  2. 结合map组件:在页面中嵌入一个map组件,并通过map组件的showLocationmarkers属性来设置初始的中心点和标记点。这样,当用户打开选择位置界面时,他们会看到一个已经定位到特定区域或点的地图,从而更可能在这个区域附近选择位置。

  3. 使用自定义地图服务:如果uni.chooseLocation的默认搜索范围仍然无法满足需求,你可以考虑使用自定义的地图服务(如腾讯地图、高德地图等)的SDK。这些SDK通常提供更丰富的功能,包括设置搜索范围、自定义搜索条件等。

以下是一个结合map组件的示例代码:

<template>
  <view>
    <map
      id="map"
      longitude="{{longitude}}"
      latitude="{{latitude}}"
      scale="15"
      show-location
      markers="{{markers}}"
      style="width: 100%; height: 300px;"
    ></map>
    <button @click="chooseLocation">选择位置</button>
  </view>
</template>

<script>
export default {
  data() {
    return {
      longitude: 116.397428, // 初始经度
      latitude: 39.90923,    // 初始纬度
      markers: [
        {
          id: 1,
          latitude: 39.90923,
          longitude: 116.397428,
          title: '当前位置'
        }
      ]
    };
  },
  methods: {
    chooseLocation() {
      uni.chooseLocation({
        type: 'gcj02', // 坐标类型
        success: (res) => {
          this.longitude = res.longitude;
          this.latitude = res.latitude;
          this.markers = [{
            id: 1,
            latitude: res.latitude,
            longitude: res.longitude,
            title: '选择的位置'
          }];
        }
      });
    }
  }
};
</script>

在这个例子中,我们首先通过map组件显示了一个地图,并设置了初始的中心点和标记点。然后,当用户点击“选择位置”按钮时,会调用uni.chooseLocation接口,并在选择完成后更新地图的中心点和标记点。这样,用户的搜索范围就被间接地限制在了地图显示的区域内。

回到顶部