在UniApp微信小程序中,map组件的show-location属性用于显示用户当前位置的定位图标,如果设置后没效果,通常由以下原因导致:
1. 权限问题
- 定位权限未开启:确保用户已授权小程序获取地理位置权限。
- 解决方案:
- 在pages.json中为页面配置权限:{
  "path": "pages/your-page",
  "style": {
    "app-plus": {
      "permissions": ["geolocation"]
    }
  }
}
 
- 在代码中动态请求授权(需用户操作触发,如按钮点击):uni.authorize({
  scope: 'scope.userLocation',
  success: () => {
    console.log('授权成功');
  },
  fail: (err) => {
    console.log('授权失败', err);
  }
});
 
 
2. 属性配置错误
3. API调用顺序问题
- 若需显示当前位置,通常需先调用uni.getLocation获取坐标,再传递给map组件:uni.getLocation({
  type: 'gcj02', // 微信小程序支持的坐标系
  success: (res) => {
    this.latitude = res.latitude;
    this.longitude = res.longitude;
  },
  fail: (err) => {
    console.log('获取位置失败', err);
  }
});
 
4. 微信开发者工具限制
5. 基础库版本兼容性
- 确保微信基础库版本支持该功能(一般近期版本均支持)。
完整示例
<template>
  <view>
    <map :latitude="latitude" :longitude="longitude" :show-location="true"></map>
  </view>
</template>
<script>
export default {
  data() {
    return {
      latitude: 0,
      longitude: 0
    };
  },
  onLoad() {
    this.getLocation();
  },
  methods: {
    getLocation() {
      uni.getLocation({
        type: 'gcj02',
        success: (res) => {
          this.latitude = res.latitude;
          this.longitude = res.longitude;
        }
      });
    }
  }
};
</script>
排查步骤
- 检查真机权限授权状态。
- 确认代码中坐标获取成功且传递正确。
- 在真机微信环境中测试。
若问题仍存在,请检查微信小程序官方文档更新或开发者社区反馈。