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' };
}
}
