无人区域 2024-08-05 16:18 采纳率: 25%
浏览 43

uni.getLocation获取的海拔为0

//APP获取地理位置
uni.getLocation({
    type: 'gcj02',
    altitude: true,
     geocode: false,
    isHighAccuracy: true,    
    success: res => {
        console.log("wgs84",res)    
     },
    fail: err => {
         // 获取失败,err为错误信息
         console.log('getLocation err:', err);
     }
});

在真机模拟上,获取到的altitude一直都是0,这是什么问题

不使用百度和高德,还有其他方法能获取海拔吗

  • 写回答

1条回答 默认 最新

  • 码农阿豪@新空间 新星创作者: 前端开发技术领域 2024-08-06 09:07
    关注
    让阿豪来帮你解答,本回答参考chatgpt3.5编写提供,如果还有疑问可以评论或留言
    根据给出的代码,使用uni.getLocation方法获取到的位置信息默认是使用gcj02坐标系的,而不是wgs84坐标系。如果想获取wgs84坐标系的位置信息,需要进行一定的转换。海拔一直为0的问题可能是由于设备不支持提供海拔信息,或者该数据不可用导致的。 除了使用uni.getLocation方法外,还可以通过以下方法获取海拔信息:
    1. 使用HTML5的Geolocation API获取设备经纬度信息,再通过第三方地图服务的API获取海拔信息。
    2. 使用设备的传感器信息,比如气压传感器或者激光测距仪来获取海拔信息。 案例代码如下:
    if (navigator.geolocation) {
      navigator.geolocation.getCurrentPosition(function(position) {
        var latitude = position.coords.latitude;
        var longitude = position.coords.longitude;
        
        // 使用第三方地图服务的API获取海拔信息
        fetch('https://api.open-elevation.com/api/v1/lookup?locations=' + latitude + ',' + longitude)
          .then(response => response.json())
          .then(data => {
            var altitude = data.results[0].elevation;
            console.log('海拔高度为:' + altitude + '米');
          })
          .catch(error => console.log('获取海拔信息失败:', error)); 
      }, function(error) {
        console.log('获取位置信息失败:', error);
      });
    } else {
      console.log('浏览器不支持Geolocation API');
    }
    

    上述代码首先检测浏览器是否支持Geolocation API,然后获取设备的经纬度信息,并使用第三方地图服务的API获取海拔信息。

    评论

报告相同问题?

问题事件

  • 修改了问题 8月7日
  • 创建了问题 8月5日