27 lines
966 B
TypeScript
27 lines
966 B
TypeScript
import { weixinSdk } from './weixin';
|
||
|
||
export type StorePosition = {
|
||
latitude: number;
|
||
longitude: number;
|
||
};
|
||
|
||
/** 获取当前 GPS 坐标(微信 JSSDK / 浏览器 Geolocation) */
|
||
export async function locateStorePosition(): Promise<StorePosition> {
|
||
const outcome = await weixinSdk.getLocationDetailed();
|
||
if (!outcome.location) {
|
||
throw new Error(outcome.errMsg || '定位失败,请允许位置权限后重试');
|
||
}
|
||
const { latitude, longitude } = outcome.location;
|
||
if (!Number.isFinite(latitude) || !Number.isFinite(longitude)) {
|
||
throw new Error('定位结果无效');
|
||
}
|
||
return { latitude, longitude };
|
||
}
|
||
|
||
export function formatStoreCoords(lat?: string | number | null, lng?: string | number | null): string {
|
||
const a = lat != null && lat !== '' ? Number(lat) : NaN;
|
||
const b = lng != null && lng !== '' ? Number(lng) : NaN;
|
||
if (!Number.isFinite(a) || !Number.isFinite(b)) return '';
|
||
return `${a.toFixed(6)}, ${b.toFixed(6)}`;
|
||
}
|