国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

vue3使用Mars3D寫區(qū)塊地圖

這篇具有很好參考價(jià)值的文章主要介紹了vue3使用Mars3D寫區(qū)塊地圖。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

效果圖

mars3d圖層下鉆,vue3,mars3D

引入相關(guān)文件

因?yàn)槲乙彩堑谝淮问褂茫晕沂前巡寮驮次募家肓?,能使用啟?dòng)

源文件

下載地址:
http://mars3d.cn/download.html
mars3d圖層下鉆,vue3,mars3D
放入位置
mars3d圖層下鉆,vue3,mars3D
在index.html中引入
mars3d圖層下鉆,vue3,mars3D

	<!--引入cesium基礎(chǔ)lib-->
		<link href="/static/Cesium/Widgets/widgets.css" rel="stylesheet" />
		<script src="/static/Cesium/Cesium.js" type="text/javascript"></script>
		<!--引入mars3d庫(kù)lib-->
		<link href="/static/mars3d-JS/mars3d.css" rel="stylesheet" />
		<script src="/static/mars3d-JS/mars3d.js" type="text/javascript"></script>
引入插件
npm install mars3d --save  

我是封裝的組件,代碼的使用和意義 我直接放在備注中

大體布局
父組件

mars3d圖層下鉆,vue3,mars3D
mars3d圖層下鉆,vue3,mars3D
mars3d圖層下鉆,vue3,mars3D
添加地圖內(nèi)部數(shù)據(jù)和地圖外部數(shù)據(jù)的方法 ,我都是放在上圖的moreMethod()方法中一起調(diào)用的
mars3d圖層下鉆,vue3,mars3D
mars3d圖層下鉆,vue3,mars3D

子組件

mars3d圖層下鉆,vue3,mars3D文章來源地址http://www.zghlxwxcb.cn/news/detail-807278.html

// 這個(gè)是初始化地圖的視角等一些基本配置
const mapOptions = {
	scene: {
		center: { lat: 26.803502, lng: 104.706942, alt: 303223.8, heading: 357.36, pitch: -57.36, roll: 0.01 }, //alt 高度值  heading 方向角 pitch俯仰角 roll 翻滾角
		orderIndependentTranslucency: false,
		contextOptions: { webgl: { alpha: true } }, // 允許透明,只能Map初始化傳入 [關(guān)鍵代碼]
		showSun: false,
		showMoon: false,
		showSkyBox: false,
		showSkyAtmosphere: false,
		fog: false,
		globe: {
			baseColor: "rgba(0,0,0,0)", // 地球地面背景色
			showGroundAtmosphere: false,
			enableLighting: false
		}
	},
	control: {
		baseLayerPicker: false
	},
	terrain: { show: false },
	layers: [],
	basemaps: []
	// basemaps: [{ name: "天地圖", type: "tdt", layer: "img_d", show: true }]
};
const map = ref(null);
//初始地圖
const initMap = () => {
	return new Promise(resolve => {
	// mars3dContainer對(duì)應(yīng)的是div上面的id,mapOptions就是上面寫的配置
		map.value = new mars3d.Map("mars3dContainer", mapOptions);
		//添加背景圖
		// map.value.container.style.backgroundImage = `url(${getImageUrl("bg")})`;
		map.value.container.style.backgroundRepeat = "no-repeat";
		map.value.container.style.backgroundSize = "100% 100%";
		resolve(map.value);
	});
};
// 這個(gè)是地圖對(duì)應(yīng)的底圖
const baseMap = levelCode => {
	// 因?yàn)楣δ艽嬖诘讏D下鉆和返回,所以當(dāng)?shù)貓D下鉆或返回上一層級(jí)的時(shí)候
	//需要判斷這個(gè)圖層是否存在,存在就刪除之前的圖層,然后渲染信的圖層頁(yè)面
	if (map.value.getLayerById("tileBaseLayer")) {
		map.value.removeLayer(map.value.getLayerById("tileBaseLayer"));
	}
	const tileLayer = new mars3d.layer.XyzLayer({
		id: "tileBaseLayer",
		crs: "EPSG:4326",
		// 這個(gè)是寫底圖的來源,因?yàn)槲翼?xiàng)目是封裝了底圖的 所以你可以更換成你想要的其他的底圖
		url: baseMapLayer[levelCode] // rectangle: { xmin: 114.883371, xmax: 119.649144, ymin: 29.395253, ymax: 34.650809 }
	});
	map.value.addLayer(tileLayer);
};
// 添加地圖和內(nèi)邊界線 val--地圖的數(shù)據(jù)  level--地圖的層級(jí)  map--就是我父組件定義的map
const addYibin = (val, level, map) => {
	// 各市邊界線和名稱--先清除再添加
	if (map.getLayerById("childLineLayer")) {
		map.removeLayer(map.getLayerById("childLineLayer"));
	}
	//各子級(jí)標(biāo)簽--先清除再添加
	if (map.getLayerById("tipYibinGraphicLayer")) {
		map.removeLayer(map.getLayerById("tipYibinGraphicLayer"));
	}
	const childLineLayer = new mars3d.layer.GeoJsonLayer({
		id: "childLineLayer",
		name: "各子級(jí)邊界線",
		// url: `//data.mars3d.cn/file/geojson/areas/${level}_full.json`,
		// 傳遞數(shù)據(jù) 包含子集
		data: val,
		symbol: {
			type: "polyline",
			styleOptions: {
				color: "#a4b094",
				width: 1
			}
		}
	});
	map.addLayer(childLineLayer);

	let tipYibinGraphicLayer = new mars3d.layer.GraphicLayer();
	tipYibinGraphicLayer.id = "tipYibinGraphicLayer";
	map.addLayer(tipYibinGraphicLayer);
	tipYibinGraphicLayer.on(mars3d.EventType.click, event => {
		const attr = event.graphic?.attr;
		if (attr) {
		}
	});
	// 標(biāo)記
	let geojson = val;
	const arr = geojson.features;
	tipYibinGraphicLayer.clear();
	for (let index = 0; index < arr.length; index++) {
		const element = arr[index];
		const attr = element.properties; // 屬性信息
		// 這個(gè)是定義標(biāo)簽的樣式,html里面的內(nèi)容可以自定義
		const divGraphic = new mars3d.graphic.DivGraphic({
			position: [attr.smx, attr.smy],
			style: {
				html: `<div class="tipbox">
					    <div class="tipboxTitle">
							<div class="titleChild">
								<p title='${attr.name}'>${attr.name}</p>
								<img code="${attr.adcode}-${attr.name}" src="${getImageUrl("next_icon")}" id=nextIcon_${index} class="nextIcon"></img>
								<img code="${attr.adcode}-${attr.name}" src="${getImageUrl("up-icon")}" id=upIcon_${index} class="upIcon" style="display:${
					level == -1 ? "none" : "block"
				}"></img>
							</div>

						</div>
						<img src="${getImageUrl("tip_bottom")}"  class="tipboxImage"></img>
					</div>`,
				horizontalOrigin: Cesium.HorizontalOrigin.LEFT,
				verticalOrigin: Cesium.VerticalOrigin.BOTTOM,
				clampToGround: true
			},
			attr
		});
		tipYibinGraphicLayer.addGraphic(divGraphic);
	}
	//上下鉆事件
	let nextIconArr = document.getElementsByClassName("nextIcon");
	let upIconArr = document.getElementsByClassName("upIcon");

	for (let i = 0; i < nextIconArr.length; i++) {
		const item = nextIconArr[i];
		item.addEventListener("click", async (e: any) => {
			if (map.getLayerById("yibinWall")) {
				map.removeLayer(map.getLayerById("yibinWall"));
			}
			if (map.getLayerById("childLineLayer")) {
				map.removeLayer(map.getLayerById("childLineLayer"));
			}
			if (map.getLayerById("tipYibinGraphicLayer")) {
				map.removeLayer(map.getLayerById("tipYibinGraphicLayer"));
			}

			let attributesCode = e.target.attributes[0].value;

			let req = {
				parentCode: attributesCode.split("-")[0],
				name: attributesCode.split("-")[1]
			};

			emit("nextLevelFun", req);
		});
	}

	for (let i = 0; i < upIconArr.length; i++) {
		const item = upIconArr[i];
		item.addEventListener("click", async (e: any) => {
			if (map.getLayerById("yibinWall")) {
				map.removeLayer(map.getLayerById("yibinWall"));
			}
			if (map.getLayerById("childLineLayer")) {
				map.removeLayer(map.getLayerById("childLineLayer"));
			}
			if (map.getLayerById("tipYibinGraphicLayer")) {
				map.removeLayer(map.getLayerById("tipYibinGraphicLayer"));
			}
			let attributesCode = e.target.attributes[0].value;
			let req = {
				parentCode: attributesCode.split("-")[0],
				name: attributesCode.split("-")[1]
			};
			emit("uptLevelFun", req);
		});
	}
	// });
};
// 外邊界
const addBorderYibin = (valBorder, map, level) => {
	// 宜賓邊界線墻--先清除再添加
	if (map.getLayerById("yibinWall")) {
		map.removeLayer(map.getLayerById("yibinWall"));
	}

	const yibinWall = new mars3d.layer.GeoJsonLayer({
		id: "yibinWall",
		name: "宜賓邊界墻",
		// 邊界線傳值-僅自己
		data: valBorder,
		// 自定義解析數(shù)據(jù)
		onCreateGraphic: function (options) {
			const points = options.positions; // 坐標(biāo)
			const attr = options.attr; // 屬性信息
			mars3d.PolyUtil.computeSurfaceLine({
				map: map,
				positions: points,
				has3dtiles: false,
				splitNum: 80
			}).then(result => {
				const graphic = new mars3d.graphic.WallPrimitive({
					positions: result.positions,
					style: {
						addHeight: level == 1 ? -3000 : -15000,
						diffHeight: level == 1 ? 3000 : 15000, // 墻高
						materialType: mars3d.MaterialType.Image2,
						materialOptions: {
							image: getImageUrl("fence-top"),
							color: "rgba(76,215,222,0.5)"
						}
					},
					attr
				});
				yibinWall.addGraphic(graphic);
				yibinWall.flyTo({
					scale: 1.5
				});
			});
		}
	});
	map.addLayer(yibinWall);
	// map.on(mars3d.EventType.renderError, function () {
	// 	window.location.reload();
	// });
};
defineExpose({
	initMap,
	addYibin,
	baseMap,
	addBorderYibin,
	map
});

到了這里,關(guān)于vue3使用Mars3D寫區(qū)塊地圖的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • Mars3D手把手開發(fā)教程(vue3)

    Mars3D手把手開發(fā)教程(vue3)

    Mars3D三維可視化平臺(tái) ?是火星科技?(opens new window)研發(fā)的一款基于 WebGL 技術(shù)實(shí)現(xiàn)的三維客戶端開發(fā)平臺(tái),基于Cesium?(opens new window)優(yōu)化提升與B/S架構(gòu)設(shè)計(jì),支持多行業(yè)擴(kuò)展的輕量級(jí)高效能GIS開發(fā)平臺(tái),能夠免安裝、無插件地在瀏覽器中高效運(yùn)行,并可快速接入與使用多種GIS數(shù)

    2024年04月15日
    瀏覽(33)
  • vue3 + vite + ts 集成mars3d

    vue3 + vite + ts 集成mars3d

    使用mars3d過程中,需要集成mars3d到自己的項(xiàng)目中,mars3d開發(fā)教程中已經(jīng)有集成好的項(xiàng)目模板 http://mars3d.cn/doc.html 項(xiàng)目模板gitte地址:https://gitee.com/marsgis/mars3d-vue-template/tree/master/mars3d-vue3-vite 如果不想用官方的模板就需要自己集成 如何創(chuàng)建項(xiàng)目參考網(wǎng)上的教程,這里就不做詳細(xì)

    2024年02月06日
    瀏覽(40)
  • Vue3項(xiàng)目中集成mars3D簡(jiǎn)單三部曲

    Vue3項(xiàng)目中集成mars3D簡(jiǎn)單三部曲

    這里是參考網(wǎng)址,大佬可以點(diǎn)擊一件跳轉(zhuǎn) 1.安裝依賴 2.修改 vite.config.ts 配置文件 3. 新建DIV容器 + 創(chuàng)建地圖 新建map.ts文件,以下代碼閉眼直接copy vue文件引入map.ts,以下代碼閉眼直接copy 快去試試吧~

    2024年01月25日
    瀏覽(24)
  • Vue2項(xiàng)目使用mars3d

    或參考webpack.config.js寫法進(jìn)行修改

    2024年02月14日
    瀏覽(57)
  • mars3d顯示地圖,并且完成切換地圖圖層的功能,使用隱藏顯示去控制圖層

    如何安裝mars3d請(qǐng)看這個(gè)鏈接哈! 我用的是vue3 先引入mars3d 創(chuàng)建地圖的變量 在template中定義div,并且id名為cesiumBox(可以自定義) 在 onMounted 中使用 切換地圖圖層的實(shí)例 在上面的實(shí)例繼續(xù)添加下面代碼 show為false的話是圖層隱藏掉 天地圖的api鏈接在底部 接著在 template 添加此代碼

    2024年02月12日
    瀏覽(34)
  • 【mars3d】Vue3項(xiàng)目集成mard3d實(shí)現(xiàn)gis空間地理系統(tǒng)

    【mars3d】Vue3項(xiàng)目集成mard3d實(shí)現(xiàn)gis空間地理系統(tǒng)

    最近公司的業(yè)務(wù)邏輯需要使用到gis空間地理系統(tǒng),最開始使用的是Cesium.js.涉及東西很多,對(duì)新手不是太友好,傳送門: https://cesium.com/platform/cesiumjs/ . 業(yè)務(wù)要使用到很多特效,剛接觸到Cesium,很多效果實(shí)現(xiàn)起來很雞肋,mars3d則很適合新手.文檔與示例也很全,現(xiàn)在記錄一下vue3項(xiàng)目如何集

    2024年02月13日
    瀏覽(26)
  • 通過Mars3d在地圖上加載風(fēng)力發(fā)電機(jī)車模型

    通過Mars3d在地圖上加載風(fēng)力發(fā)電機(jī)車模型

    首先理清需求,通過Mars3d的基礎(chǔ)項(xiàng)目,在基礎(chǔ)項(xiàng)目模板上添加一個(gè)風(fēng)力發(fā)電機(jī)模型。 Mars3d官網(wǎng)的基礎(chǔ)項(xiàng)目下載地址:Mars3D三維可視化平臺(tái) | 火星科技 gitee地址: git clone https://gitee.com/marsgis/mars3d-vue-project.git 下載一份基礎(chǔ)項(xiàng)目模板到本地后,參考README.md正常打開運(yùn)行即可 其次

    2024年02月01日
    瀏覽(26)
  • Mars3D使用教程

    Mars3D使用教程

    1、使用npm安裝依賴庫(kù) //安裝mars3d主庫(kù) ? //安裝mars3d插件(按需安裝) ? //安裝copy-webpack-plugin 插件在第3步中使用,根據(jù)webpack版本安裝,不匹配的版本可能出錯(cuò),版本需要5.0 “copy-webpack-plugin”: “^5.0.0”, 2.在main.js全局導(dǎo)入 或者 在使用mars3d的文件中導(dǎo)入(這一步可以跳過,

    2024年02月02日
    瀏覽(30)
  • vue集成mars3d后,basemaps加不上去

    vue集成mars3d后,basemaps加不上去

    首先: template ? div id=\\\"centerDiv\\\" class=\\\"mapcontainer\\\" ? ? mars-map :url=\\\"configUrl\\\" @οnlοad=\\\"onMapload\\\" / ? /div /template script import MarsMap from \\\'../components/mars-work/mars-map.vue\\\' import * as mars3d from \\\'mars3d\\\' //npm install mars3d-echarts --save import \\\'mars3d-echarts\\\' const Cesium = mars3d.Cesium export default { ? // eslint-disabl

    2024年02月10日
    瀏覽(24)
  • Mars3D Studio 的使用方法

    Mars3D Studio 的使用方法

    mars3d Studio 是 mars3d 研發(fā)團(tuán)隊(duì)于近期研發(fā)上線的一款 場(chǎng)景可視化編輯平臺(tái)。擁有資源存檔、團(tuán)隊(duì)協(xié)作、定制材質(zhì)等豐富的功能??梢詫?shí)現(xiàn)零代碼構(gòu)建一個(gè)可視化三維場(chǎng)景。 (1)數(shù)據(jù)上傳:目前支持 tif 影像上傳、 3dtitles 、 gltf 小模型上傳以及矢量數(shù)據(jù)( shp、gesojson、kml ) 下

    2023年04月16日
    瀏覽(30)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包