收藏
回答

wxsdk getLocation 的type参数不生效的问题,是我使用的问题还是bug?

wxsdk getLocation 的type参数不生效的问题。下面是业务代码

  // 同时获取用户位置和地点位置
    const [userLocation, userLocationGcj02, browserLocation, placeLocation] = await Promise.all([
      getUserLocationByWxSdk('wgs84'),
      getUserLocationByWxSdk(),
      getLocationByBrowser(),
      getPlaceLocationByPlaceId(placeId),
    ]);
    const isRange = isWithinRange(userLocation, placeLocation, 1000);
    const distance = calculateDistance(userLocation, placeLocation);


    // ===============test
    const distanceWgs84 = calculateDistance(browserLocation, placeLocation);
    const distanceGcj02 = calculateDistance(userLocationGcj02, placeLocation);


    const wgs84ToGcj02 = gcoord.transform(
      [userLocation.latitude, userLocation.longitude],
      gcoord.WGS84,
      gcoord.GCJ02
    );
    const test2 = gcoord.transform(
      [userLocationGcj02.latitude, userLocationGcj02.longitude],
      gcoord.WGS84,
      gcoord.GCJ02
    );


    uni.showModal({
      title: '提示',
      content: `


      WX-SDK(wgs84):${userLocation.latitude},${userLocation.longitude}\n
      WX-SDK(gcj02):${userLocationGcj02.latitude},${userLocationGcj02.longitude}\n
      浏览器定位位置(wgs84):${browserLocation.latitude},${browserLocation.longitude}\n
      当前设施位置:${placeLocation.latitude},${placeLocation.longitude}\n
      距离设施(WX-SDK wgs84):${distance}米\n
      距离设施(WX-SDK gcj02):${distanceGcj02}米\n
      距离设施(浏览器):${distanceWgs84}米\n
      -------------
      wgs84ToGcj02:${wgs84ToGcj02}\n
      test2:${test2}\n


      `,
      showCancel: true,
    });


真机生产数据。那wsg84和gcj02怎么就一样了呢?????

封装Wxsdk的方法

/**
 * H5通过微信JDK获取用户位置
 * @param type 位置类型 gcj02/wgs84 默认gcj02
 * @returns 用户位置
 */
export const getUserLocationByWxSdk = async (
  type: 'gcj02' | 'wgs84' = 'gcj02'
): Promise<GeoPosition> => {
  if (!navigator.geolocation) {
    uni.showToast({
      title: '您的设备不支持定位功能',
      icon: 'none',
    });
    return { latitude: 0, longitude: 0 };
  }


  try {
    const location = await new Promise<GeoPosition>((resolve, reject) => {
      //@ts-ignore
      wx.getLocation({
        type,
        isHighAccuracy: true,
        success: (res: any) => {
          const { latitude, longitude, accuracy } = res;
          resolve({ latitude, longitude, accuracy, type });
        },
        fail: reject,
      });
    });


    return location;
  } catch (err) {
    console.error('获取位置失败:', err);
    uni.showToast({
      title: '获取位置失败',
      icon: 'none',
    });
    return { latitude: 0, longitude: 0, accuracy: 0, type: 'gcj02' };
  }
}
回答关注问题邀请回答
收藏

1 个回答

  • 智能回答 智能回答 本次回答由AI生成
    01-23
    有用
登录 后发表内容