修复 SDK 同源资源加载

将生产环境 SDK 接口、H5 基座和模型资源配置为同源访问,避免 HTTPS 页面请求 HTTP 后端或 MinIO 资源时触发混合内容拦截。

同步更新环境变量模板,并移除导览页中废弃的 3D 视角切换入口。
This commit is contained in:
lyf
2026-06-26 12:22:42 +08:00
parent edff91efb4
commit bd19b6e23a
3 changed files with 30 additions and 17 deletions

View File

@@ -1,3 +1,15 @@
# 腾讯地图 API Key
# 请到 https://lbs.qq.com/index.html 申请
VITE_TENCENT_MAP_KEY=your_tencent_map_key_here
# 数据源模式sdk / mock
VITE_DATA_SOURCE_MODE=sdk
VITE_API_BASE_URL=/app-api
VITE_SGS_SDK_TIMEOUT_MS=15000
# SGS SDK 配置(生产部署使用同源路径,避免 HTTPS 页面请求 HTTP 后端被浏览器拦截)
VITE_SGS_API_BASE_URL=/app-api
VITE_SGS_MAP_ID=1
VITE_SGS_SDK_SCRIPT_URL=/static/sgs-map-sdk/index.global.js
VITE_SGS_H5_ENGINE_URL=/h5-sdk
VITE_SGS_SDK_ORIGIN=https://guide.whaoyue.com

View File

@@ -41,8 +41,6 @@
zoom-controls-top="calc(100vh - 284px)"
show-more-control
more-control-bottom="54px"
:tools="guide3DTools"
:camera-view="guideCameraView"
:route-preview="activeRoutePreview"
:show-route="Boolean(activeRoutePreview)"
:auto-switch-threshold-low="0.58"
@@ -54,7 +52,6 @@
@indoor-view-change="handleIndoorViewChange"
@poi-click="handleGuidePoiClick"
@selection-clear="handleGuideSelectionClear"
@tool-click="handleGuideToolClick"
@more-click="handleGuideMoreClick"
@auto-switch="handleAutoSwitch"
@map-tap="handleMapTapForOutdoorNav"
@@ -345,9 +342,6 @@ const normalizeGuideFloorId = (labelOrId: string) => guideUseCase.normalizeFloor
const indoorLayerMode = computed<LayerDisplayMode>(() => (
indoorView.value === 'multi' ? 'multi' : 'single'
))
const guide3DTools = computed(() => {
return is3DMode.value ? ['视角'] : []
})
const routePlanSummary = computed(() => {
if (activeRoutePreview.value) {
@@ -708,16 +702,6 @@ const handleSelectedPoiRelated = () => {
})
}
const guideCameraView = ref<'reset' | 'top' | 'oblique'>('reset')
const handleGuideToolClick = (_tool: string) => {
// 视角循环切换:重置 -> 俯视 -> 斜视 -> 重置
const viewOrder: Array<'reset' | 'top' | 'oblique'> = ['reset', 'top', 'oblique']
const currentIndex = viewOrder.indexOf(guideCameraView.value)
const nextIndex = (currentIndex + 1) % viewOrder.length
guideCameraView.value = viewOrder[nextIndex]
}
const loadRouteTargets = async (keyword = '') => {
routeTargetsLoading.value = true
routeTargetsError.value = ''

View File

@@ -54,7 +54,24 @@ const trimTrailingSlash = (value: string) => value.replace(/\/+$/, '')
const resolveSgsAssetUrl = (url?: string | null) => {
const normalizedUrl = url?.trim()
if (!normalizedUrl) return ''
if (/^https?:\/\//i.test(normalizedUrl)) return normalizedUrl
if (/^https?:\/\//i.test(normalizedUrl)) {
try {
const assetUrl = new URL(normalizedUrl)
if (
assetUrl.hostname === '1.92.206.90'
&& assetUrl.port === '9000'
&& assetUrl.pathname.startsWith('/museum-assets/')
) {
return `${assetUrl.pathname}${assetUrl.search}${assetUrl.hash}`
}
} catch {
return normalizedUrl
}
return normalizedUrl
}
if (!normalizedUrl.startsWith('/')) return normalizedUrl
const baseUrl = trimTrailingSlash(dataSourceConfig.sgsApiBaseUrl || dataSourceConfig.apiBaseUrl || '')