feat(map): 初始视野对到点位聚类中心,并在已授权时开屏静默定位
初始视野 - 新增 computeClusterViewport:把全部点位当一个聚类,中心取算术中心 (跟点位密度走,不像外接矩形中心那样被个别远点拽偏),scale 由聚类跨度 反推出「一眼看全」的档位。当前 30 个点位算出 (113.92754, 22.76105) scale 12 —— 原来的 scale 11 会把光明区缩成一小块,留一圈空白。 - 视野改成运行时实时算,不再读数据集里手写的 defaultViewport:增删点位之后 手写值会过期,算出来的不会。手写值降级为点位为空时的兜底。 - 「回到全域」用同一个聚类视野。 - loadDataset 里判断「视野还没被用户动过」原来是硬编码 113.935/22.748/11 三个字面量,跟 DEFAULT_GUANGMING_VIEWPORT 重复;改成直接跟常量比。 开屏定位 - 新增 restoreLocationOnLaunch:仅当 scope.userLocation 已授权时静默定位并 居中,蓝点直接出现在用户位置上。未决定/已拒绝一律不碰,避免小程序第一帧 就弹微信授权框、拒绝后再连弹一个引导框;那两种状态留给定位按钮。 - 静默定位只在用户确实在光明区包络内才居中,否则把地图甩到没有任何点位的 地方比停在聚类视野更糟。 - 静默失败不弹提示,但仍写入终态,否则 status 卡在 locating、定位按钮 永远显示「定位中…」。 - 新增 isWithinGuangmingArea,与数据校验共用同一个包络定义。 需要说明:地图漂到几内亚湾不是「开屏没请求定位」造成的,而是没有 fix 时 (0, 0) 被写进 viewport。堵住它的是 isTrustworthyCoordinate(7ef4094), 开屏定位是叠在守卫之上的体验改进,不是替代 —— 用户拒权、模拟器没设位置、 室内超时都还是拿不到 fix。
This commit is contained in:
@@ -493,10 +493,13 @@ export const poiDataset: PoiDataset = {
|
||||
authoritativeBaselineProvided: false,
|
||||
canClaimFullCoverage: false,
|
||||
disclaimer: `本地数据来自 ${SNAPSHOT_CAPTURED_AT.slice(0, 10)} 高德候选快照并经 POC 筛选;简介、开放时间、推荐指数与图片仍需项目方逐点复核,不代表光明区全域权威清单。`,
|
||||
// 仅在运行时算不出聚类视野(点位为空)时兜底。
|
||||
// 值取自 30 个点位的算术中心,与 computeClusterViewport 的结果一致;
|
||||
// 真正生效的初始视野由 computeClusterViewport 按当前点位实时算出。
|
||||
defaultViewport: {
|
||||
longitude: 113.9275,
|
||||
latitude: 22.76,
|
||||
scale: 11,
|
||||
latitude: 22.7611,
|
||||
scale: 12,
|
||||
},
|
||||
},
|
||||
categories: [
|
||||
|
||||
Reference in New Issue
Block a user