diff --git a/scripts/generate-guide-floor-basemaps.mjs b/scripts/generate-guide-floor-basemaps.mjs index 60b4a7f..8c8be71 100644 --- a/scripts/generate-guide-floor-basemaps.mjs +++ b/scripts/generate-guide-floor-basemaps.mjs @@ -411,10 +411,28 @@ const main = async () => { await mkdir(outputDir, { recursive: true }) const sdkManifest = await getJson(`${apiRoot}/gis/sdk/maps/${encodeURIComponent(mapId)}/manifest`) - const accessibleFloors = (sdkManifest.floors || []).filter((floor) => { + const selectedFloors = (sdkManifest.floors || []).filter((floor) => { const code = String(floor.floorCode || '').trim().toUpperCase() - return Boolean(code && floor.modelUrl && (!requestedFloors.size || requestedFloors.has(code))) + return Boolean(code && (!requestedFloors.size || requestedFloors.has(code))) }) + const accessibleFloors = (await Promise.all(selectedFloors.map(async (floor) => { + if (floor.modelUrl) return floor + + const bundle = await getJson( + `${apiRoot}/gis/sdk/floors/${encodeURIComponent(String(floor.floorId))}/bundle` + ) + const modelUrl = String(bundle?.model?.modelUrl || '').trim() + if (!modelUrl) { + throw new Error(`${floor.floorCode}: SDK manifest and floor bundle both lack a model URL`) + } + return { + ...floor, + modelUrl, + modelVersion: String( + bundle?.model?.modelVersion || bundle?.dataVersion || floor.modelVersion || sdkManifest.dataVersion || 'unversioned' + ) + } + }))).filter(Boolean) const sdkFloorsByCode = new Map((sdkManifest.floors || []).map((floor) => ( [String(floor.floorCode || '').trim().toUpperCase(), floor] ))) diff --git a/scripts/verify-arrival-navigation-build.cjs b/scripts/verify-arrival-navigation-build.cjs index 79fa90a..d0a9274 100644 --- a/scripts/verify-arrival-navigation-build.cjs +++ b/scripts/verify-arrival-navigation-build.cjs @@ -43,20 +43,28 @@ const h5JavaScriptCode = h5JavaScriptFiles .map((filePath) => readText(filePath)) .join('\n') +// H5 uses the embedded Tencent JS map and the backend route service. The +// historical external-map handoff must not be required by this bundle check. for (const required of [ - '第三方', - '打开地图', - 'jweixin', - 'miniProgram', - '/pages/open-location/index', - 'baidumap://', - 'iosamap://', - 'androidamap://' + '/gis/outdoor-map', + '/routes/plan', + '/places/suggestions', + '/geocoding/reverse', + '重新检测', + '手动选择起点', + '地图选点', + 'semanticEnterBuilding' ]) { assertContains(h5JavaScriptCode, required, 'H5 全量 JS') } -for (const forbidden of ['native-location']) { +for (const forbidden of [ + 'OutdoorNavigationPanel', + '打开地图导航', + 'baidumap://', + 'iosamap://', + 'androidamap://' +]) { assertNotContains(h5JavaScriptCode, forbidden, 'H5 全量 JS') } @@ -78,32 +86,22 @@ const mpArrivalPanelTemplatePath = path.join( 'ArrivalPanel.wxml' ) const mpArrivalPanelTemplate = readText(mpArrivalPanelTemplatePath) -assertContains(mpArrivalPanelCode, '打开地图导航', 'mp-weixin 来馆组件') -assertContains( - mpArrivalPanelCode, - '../../services/WechatOpenLocationService.js', - 'mp-weixin 来馆组件' -) +assertContains(mpArrivalPanelCode, 'typeChange', 'mp-weixin 来馆组件') +assertContains(mpArrivalPanelTemplate, '去这里', 'mp-weixin 来馆模板') assertNotContains(mpArrivalPanelCode, 'third-party-providers', 'mp-weixin 来馆组件') assertNotContains(mpArrivalPanelTemplate, 'provider-sheet', 'mp-weixin 来馆模板') assertNotContains(mpArrivalPanelTemplate, '第三方导航', 'mp-weixin 来馆模板') -const mpAppConfigPath = path.join(mpRoot, 'app.json') -const mpAppConfig = JSON.parse(readText(mpAppConfigPath)) -if (!mpAppConfig.pages?.includes('pages/open-location/index')) { - throw new Error('mp-weixin app.json 未注册 open-location 页面') -} - console.log(JSON.stringify({ h5: { html: path.relative(projectRoot, htmlPath), entry: path.relative(projectRoot, entryPath), pageChunk: path.relative(projectRoot, pageChunkPath), - navigationMode: 'third-party-providers' + navigationMode: 'embedded-tencent-map' }, mpWeixin: { component: path.relative(projectRoot, mpArrivalPanelPath), template: path.relative(projectRoot, mpArrivalPanelTemplatePath), - navigationMode: 'native-location' + navigationMode: 'arrival-target-selection' } }, null, 2)) diff --git a/src/App.vue b/src/App.vue index 3dbe05d..5249e09 100644 --- a/src/App.vue +++ b/src/App.vue @@ -1,7 +1,9 @@ diff --git a/src/components/explain/ExplainGuideStopCatalog.vue b/src/components/explain/ExplainGuideStopCatalog.vue index fda056b..639259f 100644 --- a/src/components/explain/ExplainGuideStopCatalog.vue +++ b/src/components/explain/ExplainGuideStopCatalog.vue @@ -1,11 +1,11 @@