样式以及地图性能优化

This commit is contained in:
BianLzhaoMin 2025-07-30 16:06:45 +08:00
parent 4f94e80dc8
commit 1309095602
9 changed files with 499 additions and 436 deletions

View File

@ -138,27 +138,31 @@ body {
/* bottom: 15px; */ /* bottom: 15px; */
top: 50px; top: 50px;
left: 15px; left: 15px;
width: 140px; /* width: 140px; */
height: 280px; /* height: 280px; */
display: flex; display: flex;
flex-direction: column; flex-direction: column;
justify-content: space-around; justify-content: space-between;
border-radius: 10px; border-radius: 10px;
visibility: visible; visibility: visible;
} }
.legend-box .legend-item { .legend-box .legend-item {
padding: 0 6px; padding: 4px 8px;
display: flex; display: flex;
align-items: center; align-items: center;
justify-content: space-between; justify-content: space-between;
font-size: 14px; font-size: 16px;
}
.legend-item-name {
margin: 0 6px;
} }
.legend-box .legend-item img { .legend-box .legend-item img {
width: 20px; width: 26px;
height: 20px; height: 26px;
} }
/* .legend-box .legend-item:nth-child(1) img, /* .legend-box .legend-item:nth-child(1) img,
@ -213,12 +217,12 @@ body {
position: absolute; position: absolute;
bottom: 35px; bottom: 35px;
left: 15px; left: 15px;
width: 260px; width: 40%;
padding: 10px; padding: 10px;
background: rgba(0, 0, 0, 0.6); background: rgba(0, 0, 0, 0.6);
border-radius: 10px; border-radius: 10px;
z-index: 999; z-index: 999;
visibility: visible; visibility: hidden;
/* display: flex; /* display: flex;
flex-direction: column; flex-direction: column;
@ -254,7 +258,7 @@ body {
.project-overview-title { .project-overview-title {
padding-bottom: 10px 0; padding-bottom: 10px 0;
font-size: 14px; font-size: 20px;
font-weight: bold; font-weight: bold;
text-align: center; text-align: center;
color: #fff; color: #fff;
@ -264,18 +268,18 @@ body {
text-indent: 2em; text-indent: 2em;
/* max-height: 220px; */ /* max-height: 220px; */
color: #fff; color: #fff;
font-size: 14px; font-size: 16px;
letter-spacing: 1px; letter-spacing: 1px;
/* padding-bottom: 10px; */ /* padding-bottom: 10px; */
/* 设置溢出隐藏显示... */ /* 设置溢出隐藏显示... */
/* overflow: hidden; /* overflow: hidden;
text-overflow: ellipsis; text-overflow: ellipsis;
white-space: nowrap; */ white-space: nowrap; */
display: -webkit-box; /* display: -webkit-box;
-webkit-line-clamp: 12; /* 限制显示的行数 */ -webkit-line-clamp: 12;
-webkit-box-orient: vertical; -webkit-box-orient: vertical;
overflow: hidden; overflow: hidden;
text-overflow: ellipsis; text-overflow: ellipsis; */
} }
/* 索道信息窗口样式 */ /* 索道信息窗口样式 */
@ -369,6 +373,7 @@ body {
border-color: transparent #d7d7d7 transparent transparent; border-color: transparent #d7d7d7 transparent transparent;
z-index: 999; z-index: 999;
cursor: pointer; cursor: pointer;
transform: rotate(180deg);
} }
.close-drawer-btn { .close-drawer-btn {

View File

@ -12,55 +12,109 @@ let lineList = [];
const mapConfig = { const mapConfig = {
scene: { scene: {
// center: {
// lat: 31.686288,
// lng: 117.229619,
// alt: 12000, // 高度≈缩放级别
// },
// highDynamicRange: false, // 关闭HDR可减少模糊
// scene3DOnly: false,
// shadows: false,
// removeDblClick: true,
// sceneMode: 1,
// showSun: true,
// showMoon: true,
// showSkyBox: true,
// showSkyAtmosphere: true,
// fog: true,
// fxaa: false,
// requestRenderMode: false,
// globe: {
// depthTestAgainstTerrain: false,
// baseColor: "#546a53",
// // showGroundAtmosphere: true,
// showGroundAtmosphere: true,
// enableLighting: false,
// },
// cameraController: {
// zoomFactor: 3.0,
// minimumZoomDistance: 1,
// maximumZoomDistance: 50000000,
// enableRotate: true,
// enableTranslate: true,
// enableTilt: true,
// enableZoom: true,
// enableCollisionDetection: true,
// minimumCollisionTerrainHeight: 15000,
// },
center: { center: {
lat: 31.686288, lat: 31.686288,
lng: 117.229619, lng: 117.229619,
// alt: 11333.9,
// heading: 359.2,
// pitch: -39.5,
alt: 12000, // 高度≈缩放级别 alt: 12000, // 高度≈缩放级别
// heading: 30, // 旋转30度
// pitch: -45, // 俯视角45度
}, },
// 强制2D模式
highDynamicRange: false, // 关闭HDR可减少模糊 sceneMode: 2, // 2表示2D模式1是3D
scene3DOnly: false, scene3DOnly: false,
// 简化渲染设置
highDynamicRange: false,
shadows: false, shadows: false,
removeDblClick: true, removeDblClick: true,
sceneMode: 1, showSun: false, // 2D模式下不需要太阳月亮
showSun: true, showMoon: false,
showMoon: true, showSkyBox: false, // 2D模式不需要天空盒
showSkyBox: true, showSkyAtmosphere: false,
showSkyAtmosphere: true, fog: false, // 关闭雾化提升性能
fog: true,
fxaa: false, fxaa: false,
requestRenderMode: false, requestRenderMode: true, // 启用按需渲染提升性能
// 简化地球配置
globe: { globe: {
depthTestAgainstTerrain: false, depthTestAgainstTerrain: false,
baseColor: "#546a53", baseColor: "#546a53",
showGroundAtmosphere: true, showGroundAtmosphere: false,
enableLighting: false, enableLighting: false,
}, },
// 简化相机控制仅保留2D必要操作
cameraController: { cameraController: {
zoomFactor: 3.0, zoomFactor: 3.0,
minimumZoomDistance: 1, minimumZoomDistance: 1,
maximumZoomDistance: 50000000, maximumZoomDistance: 50000000,
enableRotate: true, enableRotate: false, // 2D模式下不需要旋转
enableTranslate: true, enableTranslate: true, // 允许平移
enableTilt: true, enableTilt: false, // 2D模式下不需要倾斜
enableZoom: true, enableZoom: true, // 允许缩放
enableCollisionDetection: true, enableCollisionDetection: false, // 2D模式下不需要碰撞检测
minimumCollisionTerrainHeight: 15000,
}, },
}, },
control: { control: {
homeButton: true, // homeButton: true,
baseLayerPicker: true, // baseLayerPicker: true,
sceneModePicker: true, // sceneModePicker: true,
vrButton: false, // vrButton: false,
fullscreenButton: true, // fullscreenButton: true,
navigationHelpButton: true, // navigationHelpButton: true,
// animation: false,
// timeline: false,
// infoBox: false,
// geocoder: false,
// selectionIndicator: false,
// contextmenu: { hasDefault: false },
// mouseDownView: true,
// zoom: { insertIndex: 1 },
// compass: { bottom: "toolbar", left: "5px" },
// distanceLegend: { left: "10px", bottom: "2px" },
homeButton: true, // 保留首页按钮
baseLayerPicker: false, // 隐藏底图切换
sceneModePicker: false, // 隐藏2D/3D切换
vrButton: false, // 隐藏VR按钮
fullscreenButton: true, // 保留全屏按钮
navigationHelpButton: false, // 隐藏帮助按钮
animation: false, animation: false,
timeline: false, timeline: false,
infoBox: false, infoBox: false,
@ -68,23 +122,19 @@ const mapConfig = {
selectionIndicator: false, selectionIndicator: false,
contextmenu: { hasDefault: false }, contextmenu: { hasDefault: false },
mouseDownView: true, mouseDownView: true,
zoom: { insertIndex: 1 }, zoom: { insertIndex: 1 }, // 保留缩放控件
compass: { bottom: "toolbar", left: "5px" }, compass: false, // 隐藏指南针(2D不需要)
distanceLegend: { left: "10px", bottom: "2px" }, distanceLegend: false, // 隐藏距离图例
locationBar: {
fps: true,
crs: "CGCS2000_GK_Zone_3",
crsDecimal: 0,
template:
"<div>经度:{lng}</div> <div>纬度:{lat}</div> <div class='hide1000'>横{crsx} 纵{crsy}</div> <div>海拔:{alt}米</div> <div class='hide700'>层级:{level}</div><div>方向:{heading}°</div> <div>俯仰角:{pitch}°</div><div class='hide700'>视高:{cameraHeight}米</div>",
},
}, },
templateValues: { templateValues: {
// dataServer: "//data.mars3d.cn",
// gltfServerUrl: "//data.mars3d.cn/gltf",
dataServer: "//data.mars3d.cn", dataServer: "//data.mars3d.cn",
gltfServerUrl: "//data.mars3d.cn/gltf", gltfServerUrl: "//data.mars3d.cn/gltf",
}, },
terrain: { terrain: {
url: "//data.mars3d.cn/terrain", // url: "//data.mars3d.cn/terrain",
// show: false,
show: false, show: false,
}, },
basemaps: [ basemaps: [
@ -111,57 +161,6 @@ const mapConfig = {
{ name: "注记", type: "tdt", layer: "vec_z" }, { name: "注记", type: "tdt", layer: "vec_z" },
], ],
}, },
{
pid: 10,
name: "高德影像",
type: "group",
icon: "../../../../img/mars-map-img/gaode_img.png",
layers: [
{ name: "底图", type: "gaode", layer: "img_d" },
{ name: "注记", type: "gaode", layer: "img_z" },
],
},
{
pid: 10,
name: "高德电子",
type: "gaode",
icon: "../../../../img/mars-map-img/gaode_vec.png",
layer: "vec",
},
{
pid: 10,
name: "百度影像",
type: "group",
icon: "../../../../img/mars-map-img/bd-img.png",
layers: [
{ name: "底图", type: "baidu", layer: "img_d" },
{ name: "注记", type: "baidu", layer: "img_z" },
],
},
{
pid: 10,
name: "百度电子",
icon: "../../../../img/mars-map-img/bd-vec.png",
type: "baidu",
layer: "vec",
},
{
pid: 10,
name: "腾讯影像",
icon: "../../../../img/mars-map-img/tencent_img.png",
type: "group",
layers: [
{ name: "底图", type: "tencent", layer: "img_d" },
{ name: "注记", type: "tencent", layer: "img_z" },
],
},
{
pid: 10,
name: "腾讯电子",
icon: "../../../../img/mars-map-img/tencent_vec.png",
type: "tencent",
layer: "vec",
},
{ {
pid: 10, pid: 10,
name: "ArcGIS影像", name: "ArcGIS影像",
@ -232,7 +231,13 @@ function initData() {
intLat = list[0].proLat ? list[0].proLat : list[0].lat; intLat = list[0].proLat ? list[0].proLat : list[0].lat;
} }
} }
// initMap(list);
$(document).ready(function () {
// 延迟初始化,确保 DOM 已就绪
setTimeout(() => {
initMap(list); initMap(list);
}, 300);
});
} }
} }
@ -772,12 +777,21 @@ function saveData() {
.getElementsByTagName("iframe")[0]; .getElementsByTagName("iframe")[0];
frameId.contentWindow.savePointData(JSON.stringify(points)); frameId.contentWindow.savePointData(JSON.stringify(points));
parent.layer.msg("保存成功", { icon: 1 }); parent.layer.msg("保存成功", { icon: 1 });
destroyMap();
let index = parent.layer.getFrameIndex(window.name); //先得到当前 iframe层的索引 let index = parent.layer.getFrameIndex(window.name); //先得到当前 iframe层的索引
parent.layer.close(index); //再执行关闭 parent.layer.close(index); //再执行关闭
} }
// 关闭页面 // 关闭页面
function closePage() { function closePage() {
destroyMap();
let index = parent.layer.getFrameIndex(window.name); //先得到当前 iframe层的索引 let index = parent.layer.getFrameIndex(window.name); //先得到当前 iframe层的索引
parent.layer.close(index); //再执行关闭 parent.layer.close(index); //再执行关闭
} }
function destroyMap() {
if (window.mapInstance) {
window.mapInstance.destroy();
window.mapInstance = null;
}
}

View File

@ -14,61 +14,109 @@ let lineList = [];
const mapConfig = { const mapConfig = {
scene: { scene: {
// center: {
// lat: 31.686288,
// lng: 117.229619,
// alt: 12000, // 高度≈缩放级别
// },
// highDynamicRange: false, // 关闭HDR可减少模糊
// scene3DOnly: false,
// shadows: false,
// removeDblClick: true,
// sceneMode: 1,
// showSun: true,
// showMoon: true,
// showSkyBox: true,
// showSkyAtmosphere: true,
// fog: true,
// fxaa: false,
// requestRenderMode: false,
// globe: {
// depthTestAgainstTerrain: false,
// baseColor: "#546a53",
// // showGroundAtmosphere: true,
// showGroundAtmosphere: true,
// enableLighting: false,
// },
// cameraController: {
// zoomFactor: 3.0,
// minimumZoomDistance: 1,
// maximumZoomDistance: 50000000,
// enableRotate: true,
// enableTranslate: true,
// enableTilt: true,
// enableZoom: true,
// enableCollisionDetection: true,
// minimumCollisionTerrainHeight: 15000,
// },
center: { center: {
lat: 31.686288, lat: 31.686288,
lng: 117.229619, lng: 117.229619,
// alt: 11333.9,
// heading: 359.2,
// pitch: -39.5,
alt: 12000, // 高度≈缩放级别 alt: 12000, // 高度≈缩放级别
// heading: 30, // 旋转30度
// pitch: -45, // 俯视角45度
}, },
// 强制2D模式
highDynamicRange: false, // 关闭HDR可减少模糊 sceneMode: 2, // 2表示2D模式1是3D
scene3DOnly: false, scene3DOnly: false,
// 简化渲染设置
highDynamicRange: false,
shadows: false, shadows: false,
removeDblClick: true, removeDblClick: true,
sceneMode: 1, showSun: false, // 2D模式下不需要太阳月亮
showSun: true, showMoon: false,
showMoon: true, showSkyBox: false, // 2D模式不需要天空盒
showSkyBox: true, showSkyAtmosphere: false,
showSkyAtmosphere: true, fog: false, // 关闭雾化提升性能
// showSun: false, // 2D模式下可关闭
// showMoon: false, // 2D模式下可关闭
// showSkyBox: false, // 2D模式下可关闭
// fog: false, // 2D模式下可关闭
fog: true,
fxaa: false, fxaa: false,
requestRenderMode: false, requestRenderMode: true, // 启用按需渲染提升性能
// 简化地球配置
globe: { globe: {
depthTestAgainstTerrain: false, depthTestAgainstTerrain: false,
baseColor: "#546a53", baseColor: "#546a53",
// showGroundAtmosphere: true, showGroundAtmosphere: false,
showGroundAtmosphere: true,
enableLighting: false, enableLighting: false,
}, },
// 简化相机控制仅保留2D必要操作
cameraController: { cameraController: {
zoomFactor: 3.0, zoomFactor: 3.0,
minimumZoomDistance: 1, minimumZoomDistance: 1,
maximumZoomDistance: 50000000, maximumZoomDistance: 50000000,
enableRotate: true, enableRotate: false, // 2D模式下不需要旋转
enableTranslate: true, enableTranslate: true, // 允许平移
enableTilt: true, enableTilt: false, // 2D模式下不需要倾斜
enableZoom: true, enableZoom: true, // 允许缩放
enableCollisionDetection: true, enableCollisionDetection: false, // 2D模式下不需要碰撞检测
minimumCollisionTerrainHeight: 15000,
}, },
}, },
control: { control: {
homeButton: true, // homeButton: true,
baseLayerPicker: true, // baseLayerPicker: true,
sceneModePicker: true, // sceneModePicker: true,
vrButton: false, // vrButton: false,
fullscreenButton: true, // fullscreenButton: true,
navigationHelpButton: true, // navigationHelpButton: true,
// animation: false,
// timeline: false,
// infoBox: false,
// geocoder: false,
// selectionIndicator: false,
// contextmenu: { hasDefault: false },
// mouseDownView: true,
// zoom: { insertIndex: 1 },
// compass: { bottom: "toolbar", left: "5px" },
// distanceLegend: { left: "10px", bottom: "2px" },
homeButton: true, // 保留首页按钮
baseLayerPicker: false, // 隐藏底图切换
sceneModePicker: false, // 隐藏2D/3D切换
vrButton: false, // 隐藏VR按钮
fullscreenButton: true, // 保留全屏按钮
navigationHelpButton: false, // 隐藏帮助按钮
animation: false, animation: false,
timeline: false, timeline: false,
infoBox: false, infoBox: false,
@ -76,23 +124,19 @@ const mapConfig = {
selectionIndicator: false, selectionIndicator: false,
contextmenu: { hasDefault: false }, contextmenu: { hasDefault: false },
mouseDownView: true, mouseDownView: true,
zoom: { insertIndex: 1 }, zoom: { insertIndex: 1 }, // 保留缩放控件
compass: { bottom: "toolbar", left: "5px" }, compass: false, // 隐藏指南针(2D不需要)
distanceLegend: { left: "10px", bottom: "2px" }, distanceLegend: false, // 隐藏距离图例
locationBar: {
fps: true,
crs: "CGCS2000_GK_Zone_3",
crsDecimal: 0,
template:
"<div>经度:{lng}</div> <div>纬度:{lat}</div> <div class='hide1000'>横{crsx} 纵{crsy}</div> <div>海拔:{alt}米</div> <div class='hide700'>层级:{level}</div><div>方向:{heading}°</div> <div>俯仰角:{pitch}°</div><div class='hide700'>视高:{cameraHeight}米</div>",
},
}, },
templateValues: { templateValues: {
// dataServer: "//data.mars3d.cn",
// gltfServerUrl: "//data.mars3d.cn/gltf",
dataServer: "//data.mars3d.cn", dataServer: "//data.mars3d.cn",
gltfServerUrl: "//data.mars3d.cn/gltf", gltfServerUrl: "//data.mars3d.cn/gltf",
}, },
terrain: { terrain: {
url: "//data.mars3d.cn/terrain", // url: "//data.mars3d.cn/terrain",
// show: false,
show: false, show: false,
}, },
basemaps: [ basemaps: [
@ -119,57 +163,6 @@ const mapConfig = {
{ name: "注记", type: "tdt", layer: "vec_z" }, { name: "注记", type: "tdt", layer: "vec_z" },
], ],
}, },
{
pid: 10,
name: "高德影像",
type: "group",
icon: "../../../../img/mars-map-img/gaode_img.png",
layers: [
{ name: "底图", type: "gaode", layer: "img_d" },
{ name: "注记", type: "gaode", layer: "img_z" },
],
},
{
pid: 10,
name: "高德电子",
type: "gaode",
icon: "../../../../img/mars-map-img/gaode_vec.png",
layer: "vec",
},
{
pid: 10,
name: "百度影像",
type: "group",
icon: "../../../../img/mars-map-img/bd-img.png",
layers: [
{ name: "底图", type: "baidu", layer: "img_d" },
{ name: "注记", type: "baidu", layer: "img_z" },
],
},
{
pid: 10,
name: "百度电子",
icon: "../../../../img/mars-map-img/bd-vec.png",
type: "baidu",
layer: "vec",
},
{
pid: 10,
name: "腾讯影像",
icon: "../../../../img/mars-map-img/tencent_img.png",
type: "group",
layers: [
{ name: "底图", type: "tencent", layer: "img_d" },
{ name: "注记", type: "tencent", layer: "img_z" },
],
},
{
pid: 10,
name: "腾讯电子",
icon: "../../../../img/mars-map-img/tencent_vec.png",
type: "tencent",
layer: "vec",
},
{ {
pid: 10, pid: 10,
name: "ArcGIS影像", name: "ArcGIS影像",
@ -240,7 +233,14 @@ function initData() {
intLat = list[0].proLat ? list[0].proLat : list[0].lat; intLat = list[0].proLat ? list[0].proLat : list[0].lat;
} }
} }
// initMap(list);
$(document).ready(function () {
// 延迟初始化,确保 DOM 已就绪
setTimeout(() => {
initMap(list); initMap(list);
}, 300);
});
} }
} }
@ -778,12 +778,21 @@ function saveData() {
.getElementsByTagName("iframe")[0]; .getElementsByTagName("iframe")[0];
frameId.contentWindow.savePointData(JSON.stringify(points)); frameId.contentWindow.savePointData(JSON.stringify(points));
parent.layer.msg("保存成功", { icon: 1 }); parent.layer.msg("保存成功", { icon: 1 });
destroyMap();
let index = parent.layer.getFrameIndex(window.name); //先得到当前 iframe层的索引 let index = parent.layer.getFrameIndex(window.name); //先得到当前 iframe层的索引
parent.layer.close(index); //再执行关闭 parent.layer.close(index); //再执行关闭
} }
// 关闭页面 // 关闭页面
function closePage() { function closePage() {
destroyMap();
let index = parent.layer.getFrameIndex(window.name); //先得到当前 iframe层的索引 let index = parent.layer.getFrameIndex(window.name); //先得到当前 iframe层的索引
parent.layer.close(index); //再执行关闭 parent.layer.close(index); //再执行关闭
} }
function destroyMap() {
if (window.mapInstance) {
window.mapInstance.destroy();
window.mapInstance = null;
}
}

View File

@ -12,55 +12,109 @@ let lineList = [];
let graphicLayerList = []; let graphicLayerList = [];
const mapConfig = { const mapConfig = {
scene: { scene: {
// center: {
// lat: 31.686288,
// lng: 117.229619,
// alt: 12000, // 高度≈缩放级别
// },
// highDynamicRange: false, // 关闭HDR可减少模糊
// scene3DOnly: false,
// shadows: false,
// removeDblClick: true,
// sceneMode: 1,
// showSun: true,
// showMoon: true,
// showSkyBox: true,
// showSkyAtmosphere: true,
// fog: true,
// fxaa: false,
// requestRenderMode: false,
// globe: {
// depthTestAgainstTerrain: false,
// baseColor: "#546a53",
// // showGroundAtmosphere: true,
// showGroundAtmosphere: true,
// enableLighting: false,
// },
// cameraController: {
// zoomFactor: 3.0,
// minimumZoomDistance: 1,
// maximumZoomDistance: 50000000,
// enableRotate: true,
// enableTranslate: true,
// enableTilt: true,
// enableZoom: true,
// enableCollisionDetection: true,
// minimumCollisionTerrainHeight: 15000,
// },
center: { center: {
lat: 31.686288, lat: 31.686288,
lng: 117.229619, lng: 117.229619,
// alt: 11333.9,
// heading: 359.2,
// pitch: -39.5,
alt: 12000, // 高度≈缩放级别 alt: 12000, // 高度≈缩放级别
// heading: 30, // 旋转30度
// pitch: -45, // 俯视角45度
}, },
// 强制2D模式
highDynamicRange: false, // 关闭HDR可减少模糊 sceneMode: 2, // 2表示2D模式1是3D
scene3DOnly: false, scene3DOnly: false,
// 简化渲染设置
highDynamicRange: false,
shadows: false, shadows: false,
removeDblClick: true, removeDblClick: true,
sceneMode: 1, showSun: false, // 2D模式下不需要太阳月亮
showSun: true, showMoon: false,
showMoon: true, showSkyBox: false, // 2D模式不需要天空盒
showSkyBox: true, showSkyAtmosphere: false,
showSkyAtmosphere: true, fog: false, // 关闭雾化提升性能
fog: true,
fxaa: false, fxaa: false,
requestRenderMode: false, requestRenderMode: true, // 启用按需渲染提升性能
// 简化地球配置
globe: { globe: {
depthTestAgainstTerrain: false, depthTestAgainstTerrain: false,
baseColor: "#546a53", baseColor: "#546a53",
showGroundAtmosphere: true, showGroundAtmosphere: false,
enableLighting: false, enableLighting: false,
}, },
// 简化相机控制仅保留2D必要操作
cameraController: { cameraController: {
zoomFactor: 3.0, zoomFactor: 3.0,
minimumZoomDistance: 1, minimumZoomDistance: 1,
maximumZoomDistance: 50000000, maximumZoomDistance: 50000000,
enableRotate: true, enableRotate: false, // 2D模式下不需要旋转
enableTranslate: true, enableTranslate: true, // 允许平移
enableTilt: true, enableTilt: false, // 2D模式下不需要倾斜
enableZoom: true, enableZoom: true, // 允许缩放
enableCollisionDetection: true, enableCollisionDetection: false, // 2D模式下不需要碰撞检测
minimumCollisionTerrainHeight: 15000,
}, },
}, },
control: { control: {
homeButton: true, // homeButton: true,
baseLayerPicker: true, // baseLayerPicker: true,
sceneModePicker: true, // sceneModePicker: true,
vrButton: false, // vrButton: false,
fullscreenButton: true, // fullscreenButton: true,
navigationHelpButton: true, // navigationHelpButton: true,
// animation: false,
// timeline: false,
// infoBox: false,
// geocoder: false,
// selectionIndicator: false,
// contextmenu: { hasDefault: false },
// mouseDownView: true,
// zoom: { insertIndex: 1 },
// compass: { bottom: "toolbar", left: "5px" },
// distanceLegend: { left: "10px", bottom: "2px" },
homeButton: true, // 保留首页按钮
baseLayerPicker: false, // 隐藏底图切换
sceneModePicker: false, // 隐藏2D/3D切换
vrButton: false, // 隐藏VR按钮
fullscreenButton: true, // 保留全屏按钮
navigationHelpButton: false, // 隐藏帮助按钮
animation: false, animation: false,
timeline: false, timeline: false,
infoBox: false, infoBox: false,
@ -68,23 +122,19 @@ const mapConfig = {
selectionIndicator: false, selectionIndicator: false,
contextmenu: { hasDefault: false }, contextmenu: { hasDefault: false },
mouseDownView: true, mouseDownView: true,
zoom: { insertIndex: 1 }, zoom: { insertIndex: 1 }, // 保留缩放控件
compass: { bottom: "toolbar", left: "5px" }, compass: false, // 隐藏指南针(2D不需要)
distanceLegend: { left: "10px", bottom: "2px" }, distanceLegend: false, // 隐藏距离图例
locationBar: {
fps: true,
crs: "CGCS2000_GK_Zone_3",
crsDecimal: 0,
template:
"<div>经度:{lng}</div> <div>纬度:{lat}</div> <div class='hide1000'>横{crsx} 纵{crsy}</div> <div>海拔:{alt}米</div> <div class='hide700'>层级:{level}</div><div>方向:{heading}°</div> <div>俯仰角:{pitch}°</div><div class='hide700'>视高:{cameraHeight}米</div>",
},
}, },
templateValues: { templateValues: {
// dataServer: "//data.mars3d.cn",
// gltfServerUrl: "//data.mars3d.cn/gltf",
dataServer: "//data.mars3d.cn", dataServer: "//data.mars3d.cn",
gltfServerUrl: "//data.mars3d.cn/gltf", gltfServerUrl: "//data.mars3d.cn/gltf",
}, },
terrain: { terrain: {
url: "//data.mars3d.cn/terrain", // url: "//data.mars3d.cn/terrain",
// show: false,
show: false, show: false,
}, },
basemaps: [ basemaps: [
@ -111,57 +161,6 @@ const mapConfig = {
{ name: "注记", type: "tdt", layer: "vec_z" }, { name: "注记", type: "tdt", layer: "vec_z" },
], ],
}, },
{
pid: 10,
name: "高德影像",
type: "group",
icon: "../../../../img/mars-map-img/gaode_img.png",
layers: [
{ name: "底图", type: "gaode", layer: "img_d" },
{ name: "注记", type: "gaode", layer: "img_z" },
],
},
{
pid: 10,
name: "高德电子",
type: "gaode",
icon: "../../../../img/mars-map-img/gaode_vec.png",
layer: "vec",
},
{
pid: 10,
name: "百度影像",
type: "group",
icon: "../../../../img/mars-map-img/bd-img.png",
layers: [
{ name: "底图", type: "baidu", layer: "img_d" },
{ name: "注记", type: "baidu", layer: "img_z" },
],
},
{
pid: 10,
name: "百度电子",
icon: "../../../../img/mars-map-img/bd-vec.png",
type: "baidu",
layer: "vec",
},
{
pid: 10,
name: "腾讯影像",
icon: "../../../../img/mars-map-img/tencent_img.png",
type: "group",
layers: [
{ name: "底图", type: "tencent", layer: "img_d" },
{ name: "注记", type: "tencent", layer: "img_z" },
],
},
{
pid: 10,
name: "腾讯电子",
icon: "../../../../img/mars-map-img/tencent_vec.png",
type: "tencent",
layer: "vec",
},
{ {
pid: 10, pid: 10,
name: "ArcGIS影像", name: "ArcGIS影像",
@ -172,7 +171,6 @@ const mapConfig = {
}, },
], ],
}; };
function setParams(obj) { function setParams(obj) {
objParams = JSON.parse(obj); objParams = JSON.parse(obj);
layui.use(["form", "layer"], function () { layui.use(["form", "layer"], function () {
@ -232,7 +230,13 @@ function initData() {
intLat = list[0].proLat ? list[0].proLat : list[0].lat; intLat = list[0].proLat ? list[0].proLat : list[0].lat;
} }
} }
// initMap(list);
$(document).ready(function () {
// 延迟初始化,确保 DOM 已就绪
setTimeout(() => {
initMap(list); initMap(list);
}, 300);
});
} }
} }
@ -771,12 +775,21 @@ function saveData() {
.getElementsByTagName("iframe")[0]; .getElementsByTagName("iframe")[0];
frameId.contentWindow.savePointData(JSON.stringify(points)); frameId.contentWindow.savePointData(JSON.stringify(points));
parent.layer.msg("保存成功", { icon: 1 }); parent.layer.msg("保存成功", { icon: 1 });
destroyMap();
let index = parent.layer.getFrameIndex(window.name); //先得到当前 iframe层的索引 let index = parent.layer.getFrameIndex(window.name); //先得到当前 iframe层的索引
parent.layer.close(index); //再执行关闭 parent.layer.close(index); //再执行关闭
} }
// 关闭页面 // 关闭页面
function closePage() { function closePage() {
destroyMap();
let index = parent.layer.getFrameIndex(window.name); //先得到当前 iframe层的索引 let index = parent.layer.getFrameIndex(window.name); //先得到当前 iframe层的索引
parent.layer.close(index); //再执行关闭 parent.layer.close(index); //再执行关闭
} }
function destroyMap() {
if (window.mapInstance) {
window.mapInstance.destroy();
window.mapInstance = null;
}
}

View File

@ -12,55 +12,109 @@ let lineList = [];
const mapConfig = { const mapConfig = {
scene: { scene: {
// center: {
// lat: 31.686288,
// lng: 117.229619,
// alt: 12000, // 高度≈缩放级别
// },
// highDynamicRange: false, // 关闭HDR可减少模糊
// scene3DOnly: false,
// shadows: false,
// removeDblClick: true,
// sceneMode: 1,
// showSun: true,
// showMoon: true,
// showSkyBox: true,
// showSkyAtmosphere: true,
// fog: true,
// fxaa: false,
// requestRenderMode: false,
// globe: {
// depthTestAgainstTerrain: false,
// baseColor: "#546a53",
// // showGroundAtmosphere: true,
// showGroundAtmosphere: true,
// enableLighting: false,
// },
// cameraController: {
// zoomFactor: 3.0,
// minimumZoomDistance: 1,
// maximumZoomDistance: 50000000,
// enableRotate: true,
// enableTranslate: true,
// enableTilt: true,
// enableZoom: true,
// enableCollisionDetection: true,
// minimumCollisionTerrainHeight: 15000,
// },
center: { center: {
lat: 31.686288, lat: 31.686288,
lng: 117.229619, lng: 117.229619,
// alt: 11333.9,
// heading: 359.2,
// pitch: -39.5,
alt: 12000, // 高度≈缩放级别 alt: 12000, // 高度≈缩放级别
// heading: 30, // 旋转30度
// pitch: -45, // 俯视角45度
}, },
// 强制2D模式
highDynamicRange: false, // 关闭HDR可减少模糊 sceneMode: 2, // 2表示2D模式1是3D
scene3DOnly: false, scene3DOnly: false,
// 简化渲染设置
highDynamicRange: false,
shadows: false, shadows: false,
removeDblClick: true, removeDblClick: true,
sceneMode: 1, showSun: false, // 2D模式下不需要太阳月亮
showSun: true, showMoon: false,
showMoon: true, showSkyBox: false, // 2D模式不需要天空盒
showSkyBox: true, showSkyAtmosphere: false,
showSkyAtmosphere: true, fog: false, // 关闭雾化提升性能
fog: true,
fxaa: false, fxaa: false,
requestRenderMode: false, requestRenderMode: true, // 启用按需渲染提升性能
// 简化地球配置
globe: { globe: {
depthTestAgainstTerrain: false, depthTestAgainstTerrain: false,
baseColor: "#546a53", baseColor: "#546a53",
showGroundAtmosphere: true, showGroundAtmosphere: false,
enableLighting: false, enableLighting: false,
}, },
// 简化相机控制仅保留2D必要操作
cameraController: { cameraController: {
zoomFactor: 3.0, zoomFactor: 3.0,
minimumZoomDistance: 1, minimumZoomDistance: 1,
maximumZoomDistance: 50000000, maximumZoomDistance: 50000000,
enableRotate: true, enableRotate: false, // 2D模式下不需要旋转
enableTranslate: true, enableTranslate: true, // 允许平移
enableTilt: true, enableTilt: false, // 2D模式下不需要倾斜
enableZoom: true, enableZoom: true, // 允许缩放
enableCollisionDetection: true, enableCollisionDetection: false, // 2D模式下不需要碰撞检测
minimumCollisionTerrainHeight: 15000,
}, },
}, },
control: { control: {
homeButton: true, // homeButton: true,
baseLayerPicker: true, // baseLayerPicker: true,
sceneModePicker: true, // sceneModePicker: true,
vrButton: false, // vrButton: false,
fullscreenButton: true, // fullscreenButton: true,
navigationHelpButton: true, // navigationHelpButton: true,
// animation: false,
// timeline: false,
// infoBox: false,
// geocoder: false,
// selectionIndicator: false,
// contextmenu: { hasDefault: false },
// mouseDownView: true,
// zoom: { insertIndex: 1 },
// compass: { bottom: "toolbar", left: "5px" },
// distanceLegend: { left: "10px", bottom: "2px" },
homeButton: true, // 保留首页按钮
baseLayerPicker: false, // 隐藏底图切换
sceneModePicker: false, // 隐藏2D/3D切换
vrButton: false, // 隐藏VR按钮
fullscreenButton: true, // 保留全屏按钮
navigationHelpButton: false, // 隐藏帮助按钮
animation: false, animation: false,
timeline: false, timeline: false,
infoBox: false, infoBox: false,
@ -68,23 +122,19 @@ const mapConfig = {
selectionIndicator: false, selectionIndicator: false,
contextmenu: { hasDefault: false }, contextmenu: { hasDefault: false },
mouseDownView: true, mouseDownView: true,
zoom: { insertIndex: 1 }, zoom: { insertIndex: 1 }, // 保留缩放控件
compass: { bottom: "toolbar", left: "5px" }, compass: false, // 隐藏指南针(2D不需要)
distanceLegend: { left: "10px", bottom: "2px" }, distanceLegend: false, // 隐藏距离图例
locationBar: {
fps: true,
crs: "CGCS2000_GK_Zone_3",
crsDecimal: 0,
template:
"<div>经度:{lng}</div> <div>纬度:{lat}</div> <div class='hide1000'>横{crsx} 纵{crsy}</div> <div>海拔:{alt}米</div> <div class='hide700'>层级:{level}</div><div>方向:{heading}°</div> <div>俯仰角:{pitch}°</div><div class='hide700'>视高:{cameraHeight}米</div>",
},
}, },
templateValues: { templateValues: {
// dataServer: "//data.mars3d.cn",
// gltfServerUrl: "//data.mars3d.cn/gltf",
dataServer: "//data.mars3d.cn", dataServer: "//data.mars3d.cn",
gltfServerUrl: "//data.mars3d.cn/gltf", gltfServerUrl: "//data.mars3d.cn/gltf",
}, },
terrain: { terrain: {
url: "//data.mars3d.cn/terrain", // url: "//data.mars3d.cn/terrain",
// show: false,
show: false, show: false,
}, },
basemaps: [ basemaps: [
@ -111,57 +161,6 @@ const mapConfig = {
{ name: "注记", type: "tdt", layer: "vec_z" }, { name: "注记", type: "tdt", layer: "vec_z" },
], ],
}, },
{
pid: 10,
name: "高德影像",
type: "group",
icon: "../../../../img/mars-map-img/gaode_img.png",
layers: [
{ name: "底图", type: "gaode", layer: "img_d" },
{ name: "注记", type: "gaode", layer: "img_z" },
],
},
{
pid: 10,
name: "高德电子",
type: "gaode",
icon: "../../../../img/mars-map-img/gaode_vec.png",
layer: "vec",
},
{
pid: 10,
name: "百度影像",
type: "group",
icon: "../../../../img/mars-map-img/bd-img.png",
layers: [
{ name: "底图", type: "baidu", layer: "img_d" },
{ name: "注记", type: "baidu", layer: "img_z" },
],
},
{
pid: 10,
name: "百度电子",
icon: "../../../../img/mars-map-img/bd-vec.png",
type: "baidu",
layer: "vec",
},
{
pid: 10,
name: "腾讯影像",
icon: "../../../../img/mars-map-img/tencent_img.png",
type: "group",
layers: [
{ name: "底图", type: "tencent", layer: "img_d" },
{ name: "注记", type: "tencent", layer: "img_z" },
],
},
{
pid: 10,
name: "腾讯电子",
icon: "../../../../img/mars-map-img/tencent_vec.png",
type: "tencent",
layer: "vec",
},
{ {
pid: 10, pid: 10,
name: "ArcGIS影像", name: "ArcGIS影像",
@ -232,7 +231,13 @@ function initData() {
intLat = list[0].proLat ? list[0].proLat : list[0].lat; intLat = list[0].proLat ? list[0].proLat : list[0].lat;
} }
} }
// initMap(list);
$(document).ready(function () {
// 延迟初始化,确保 DOM 已就绪
setTimeout(() => {
initMap(list); initMap(list);
}, 300);
});
} }
} }
@ -777,12 +782,21 @@ function saveData() {
.getElementsByTagName("iframe")[0]; .getElementsByTagName("iframe")[0];
frameId.contentWindow.savePointData(JSON.stringify(points)); frameId.contentWindow.savePointData(JSON.stringify(points));
parent.layer.msg("保存成功", { icon: 1 }); parent.layer.msg("保存成功", { icon: 1 });
destroyMap();
let index = parent.layer.getFrameIndex(window.name); //先得到当前 iframe层的索引 let index = parent.layer.getFrameIndex(window.name); //先得到当前 iframe层的索引
parent.layer.close(index); //再执行关闭 parent.layer.close(index); //再执行关闭
} }
// 关闭页面 // 关闭页面
function closePage() { function closePage() {
destroyMap();
let index = parent.layer.getFrameIndex(window.name); //先得到当前 iframe层的索引 let index = parent.layer.getFrameIndex(window.name); //先得到当前 iframe层的索引
parent.layer.close(index); //再执行关闭 parent.layer.close(index); //再执行关闭
} }
function destroyMap() {
if (window.mapInstance) {
window.mapInstance.destroy();
window.mapInstance = null;
}
}

View File

@ -32,21 +32,21 @@ function setParams(params) {
$("#crossPublicFields").hide(); $("#crossPublicFields").hide();
$("#crossRailwayFields").hide(); $("#crossRailwayFields").hide();
crossLineFields(); crossLineFields();
$('#setting').show(); $("#setting").show();
break; break;
case "cross-public": case "cross-public":
$("#crossLineFields").hide(); $("#crossLineFields").hide();
$("#crossPublicFields").show(); $("#crossPublicFields").show();
$("#crossRailwayFields").hide(); $("#crossRailwayFields").hide();
crossPublicFields(); crossPublicFields();
$('#setting').hide(); $("#setting").hide();
break; break;
case "cross-railway": case "cross-railway":
$("#crossLineFields").hide(); $("#crossLineFields").hide();
$("#crossPublicFields").hide(); $("#crossPublicFields").hide();
$("#crossRailwayFields").show(); $("#crossRailwayFields").show();
crossRailwayFields(); crossRailwayFields();
$('#setting').hide(); $("#setting").hide();
break; break;
} }
form.render(); form.render();
@ -321,17 +321,19 @@ function getThreeSpanById() {
function (result) { function (result) {
layer.close(loadingMsg); layer.close(loadingMsg);
if (result.code === 200) { if (result.code === 200) {
if(result.data && result.data.spanType){ if (result.data && result.data.spanType) {
$('.span-type-option').eq(parseInt(result.data.spanType) - 1).trigger('click'); $(".span-type-option")
if(result.data.spanType === '1'){ .eq(parseInt(result.data.spanType) - 1)
$('.span-type-option').eq(1).hide(); .trigger("click");
$('.span-type-option').eq(2).hide(); if (result.data.spanType === "1") {
}else if(result.data.spanType === '2'){ $(".span-type-option").eq(1).hide();
$('.span-type-option').eq(0).hide(); $(".span-type-option").eq(2).hide();
$('.span-type-option').eq(2).hide(); } else if (result.data.spanType === "2") {
}else if(result.data.spanType === '3'){ $(".span-type-option").eq(0).hide();
$('.span-type-option').eq(0).hide(); $(".span-type-option").eq(2).hide();
$('.span-type-option').eq(1).hide(); } else if (result.data.spanType === "3") {
$(".span-type-option").eq(0).hide();
$(".span-type-option").eq(1).hide();
} }
} }
setFormData(result.data); setFormData(result.data);
@ -469,10 +471,14 @@ function saveData(data) {
// 组装经纬度数据 // 组装经纬度数据
let tbSpanTowerList = []; let tbSpanTowerList = [];
if (!pointsStr) { if (
!pointsStr &&
$(".span-type-option.active").data("type") === "cross-line"
) {
return layer.msg("请配置跨越杆塔经纬度", { icon: 7 }); return layer.msg("请配置跨越杆塔经纬度", { icon: 7 });
} }
if ($(".span-type-option.active").data("type") === "cross-line") {
tbSpanTowerList = JSON.parse(pointsStr).map((item) => { tbSpanTowerList = JSON.parse(pointsStr).map((item) => {
return { return {
id: item.id || null, id: item.id || null,
@ -483,6 +489,8 @@ function saveData(data) {
sort: item.sort, sort: item.sort,
}; };
}); });
}
// for (let i = 1; i <= 4; i++) { // for (let i = 1; i <= 4; i++) {
// let lon = data[`crossTowerLongitude${i}`]; // let lon = data[`crossTowerLongitude${i}`];
// let lat = data[`crossTowerLatitude${i}`]; // let lat = data[`crossTowerLatitude${i}`];

View File

@ -1375,7 +1375,7 @@ function getLegendData(id) {
innerHtml += ` innerHtml += `
<div class="legend-item"> <div class="legend-item">
<img src="${item.icon}" alt=""> <img src="${item.icon}" alt="">
<span>${item.name}</span> <span class="legend-item-name">${item.name}</span>
<span>${item.value}</span> <span>${item.value}</span>
</div> </div>
`; `;
@ -1610,24 +1610,24 @@ document.addEventListener("DOMContentLoaded", function () {
const projectOverviewContent = document.querySelector( const projectOverviewContent = document.querySelector(
".project-overview-content" ".project-overview-content"
); );
const projectOverviewPreviewBox = document.querySelector( // const projectOverviewPreviewBox = document.querySelector(
".project-overview-preview-box" // ".project-overview-preview-box"
); // );
projectOverviewBox.addEventListener("mouseenter", function () { // projectOverviewBox.addEventListener("mouseenter", function () {
if ( // if (
projectOverviewContent.scrollHeight > // projectOverviewContent.scrollHeight >
projectOverviewContent.clientHeight // projectOverviewContent.clientHeight
) { // ) {
projectOverviewPreviewBox.style.display = "block"; // projectOverviewPreviewBox.style.display = "block";
projectOverviewPreviewBox.innerHTML = // projectOverviewPreviewBox.innerHTML =
projectOverviewContent.innerHTML; // projectOverviewContent.innerHTML;
} else { // } else {
projectOverviewPreviewBox.style.display = "none"; // projectOverviewPreviewBox.style.display = "none";
projectOverviewPreviewBox.innerHTML = ""; // projectOverviewPreviewBox.innerHTML = "";
} // }
}); // });
projectOverviewBox.addEventListener("mouseleave", function () { // projectOverviewBox.addEventListener("mouseleave", function () {
projectOverviewPreviewBox.style.display = "none"; // projectOverviewPreviewBox.style.display = "none";
projectOverviewPreviewBox.innerHTML = ""; // projectOverviewPreviewBox.innerHTML = "";
}); // });
}); });

View File

@ -25,11 +25,11 @@
<script src="http://mars3d.cn/lib/mars3d/mars3d.js" type="text/javascript"></script> <script src="http://mars3d.cn/lib/mars3d/mars3d.js" type="text/javascript"></script>
<!--引入mars3d库插件lib按需引入--> <!--引入mars3d库插件lib按需引入-->
<script src="http://mars3d.cn/lib/mars3d/plugins/space/mars3d-space.js" type="text/javascript"></script> <!-- <script src="http://mars3d.cn/lib/mars3d/plugins/space/mars3d-space.js" type="text/javascript"></script> -->
<!--第三方lib非必须--> <!--第三方lib非必须-->
<link rel="stylesheet" href="http://mars3d.cn/lib/fonts/font-awesome/css/font-awesome.min.css"> <!-- <link rel="stylesheet" href="http://mars3d.cn/lib/fonts/font-awesome/css/font-awesome.min.css"> -->
<script type="text/javascript" src="http://mars3d.cn/lib/hao/haoutil.js"></script> <!-- <script type="text/javascript" src="http://mars3d.cn/lib/hao/haoutil.js"></script> -->
<title>配置索道口、中转口经纬度</title> <title>配置索道口、中转口经纬度</title>
</head> </head>

View File

@ -111,8 +111,8 @@
<!-- 预览框 --> <!-- 预览框 -->
<div class="project-overview-preview-box"> <!-- <div class="project-overview-preview-box">
</div> </div> -->
</div> </div>
<!-- 右侧抽屉 --> <!-- 右侧抽屉 -->