小程序开发如何获取地理位置信息

抖音小程序 2024-01-24 16:53:25 54
小程序开发:如何获取地理位置信息

在小程序开发过程中,获取地理位置信息是一项常用功能。本文将为您介绍如何在小程序中获取地理位置信息,以及相关注意事项。

1. 获取地理位置权限

在开发小程序时,首先需要获取用户的地理位置权限。在小程序的app.json文件中,添加如下代码:

         {
             "permission":  {
                 "scope.userLocation":  {
                      "desc":  "你的小程序需要获取位置信息"
                 }
             }
         }
     

然后,在页面对用户进行权限提示,用户授权后即可获取地理位置信息。

小程序开发如何获取地理位置信息

2. 调用地理位置接口

获取地理位置信息后,可以调用小程序的wx.getLocation接口。以下是一个示例代码:

         wx.getLocation({
              type:  'gcj02',  //  返回地理位置坐标类型,'gcj02'表示国标坐标
             success:  function  (res)  {
                 //  获取到的经纬度
                 const  latitude  =  res.lat;
                 const  longitude  =  res.lng;
                 //  处理获取到的地理位置信息
                 console.log('  latitude:  ',  latitude);
                 console.log('  longitude:  ',  longitude);
             },
             fail:  function  (err)  {
                 console.log('获取地理位置失败:',  err);
             }
         });
     

注意:type参数可选值有 'gcj02'(国标坐标)、'gps'(GPS坐标)和 'bd09'(百度坐标)。

3. 坐标转换

获取到的地理位置坐标可能是国标坐标、GPS坐标或百度坐标。根据需求,需要将其转换为相应坐标系统。以下是一个简单的坐标转换示例:

         function  gcj02ToBd09(lng,  lat)  {
             const  x_pi  =  3.14159265358979324  *  3000.0  /  180.0;
             const  pi  =  3.14159265358979323846;
             const  a  =  6378245.0;
             const  e  =  0.00669342162296594323;
             const  dx  =  lng  -  116.390625;
             const  dy  =  lat  -  39.907599;
             const  z  =  Math.sqrt(dx  *  dx  +  dy  *  dy)  +  0.00002  *  Math.sin(dy  *  x_pi);
             const  theta  =  Math.atan2(dy,  dx)  -  pi  /  2;
             const  bd_lng  =  z  *  Math.cos(theta);
             const  bd_lat  =  z  *  Math.sin(theta);
             return  {
                 lng:  bd_lng,
                 lat:  bd_lat
             };
         }
         const  gcj02Lat  =  39.907599;
         const  gcj02Lng  =  116.390625;
         const  bd09Lat  =  gcj02ToBd09(gcj02Lng,  gcj02Lat).lat;
         const  bd09Lng  =  gcj02ToBd09(gcj02Lng,  gcj02Lat).lng;
         console.log('BD09坐标:lat:  ',  bd09Lat);
         console.log('BD09坐标:lng:  ',  bd09L>
The End