uniapp引入openlayers

在uniapp中试图引入openlayers前端库,我尝试了特别引入多种方法一直不成功,还以为是包的版本问题或者链接响应问题,结果是因为css样式一直设置错误,要把的样式在设置成100vw/100vh或者固定值才能成功显示。
下面放整体代码:

<template>
	<view class="container">
		<view id="olMap" class="olMap">
			<button>点我一下试试</button>
		</view>
	</view>
</template>

<script module="ol" lang="renderjs">
	//视图层renderjs操作,注意此层中不能uniapp提供相关接口。
	// import '../../static/openlayer/v6.6.1-dist/ol.js'不支持此导入方式否则,打包失败
	export default {
		data() {
			return {
				title: 'Hello'
			}
		},
		mounted() {
			if (typeof window.ol === 'function') {
				this.initAmap()
			} else {
				const script = document.createElement('script')
				script.src = 'static/js/ol.js' //可以通过此方式导入jquery,echart库
				script.onload = this.initAmap.bind(this)
				document.head.appendChild(script)
			}

		},
		methods: {
			initAmap() {
				this.map = new ol.Map({
					layers: [
					    // 默认方法
						// new ol.layer.Tile({
						// 	source: new ol.source.OSM()
						// })
						
						// redis服务器
						// new ol.layer.Tile({
						// 	source: new ol.source.TileWMS({
						// 		url: 'http://10.133.20.9:38080/geoserver/hz/wms',
						// 		params: {
						// 			'FORMAT': 'image/png',
						// 			tiled: true,
						// 			"STYLES": '',
						// 			"LAYERS": 'hz:geotools_coverage',
						// 			"exceptions": 'application/vnd.ogc.se_inimage',
						// 			tilesOrigin: 105.43304443359374 + "," + 32.101189732320925
						// 		}
						// 	})
						// 	//new ol.source.OSM()
						// })
						
						//天地图
						//矢量底图
						new ol.layer.Tile({
							source: new ol.source.XYZ({
							url:'http://t0.tianditu.gov.cn/vec_w/wmts?SERVICE=WMTS&REQUEST=GetTile&VERSION=1.0.0&LAYER=vec&STYLE=default&TILEMATRIXSET=w&FORMAT=tiles&TILEMATRIX={z}&TILEROW={y}&TILECOL={x}&tk=053318a29e7ee8be40a0958754cc1827'
							}) 
						}),
						//矢量标记
						new ol.layer.Tile({
							source: new ol.source.XYZ({
							url:'http://t0.tianditu.gov.cn/cva_w/wmts?SERVICE=WMTS&REQUEST=GetTile&VERSION=1.0.0&LAYER=cva&STYLE=default&TILEMATRIXSET=w&FORMAT=tiles&TILEMATRIX={z}&TILEROW={y}&TILECOL={x}&tk=053318a29e7ee8be40a0958754cc1827'
							}) 
						}),				
					],
					target: "olMap",
					view: new ol.View({
						// center: ol.proj.fromLonLat([0, 0]),
						projection: "EPSG:4326", //使用这个坐标系
						center: [104, 30], //初始坐标
						zoom: 12,
						minZoom: 10,
						maxZoom: 17
					})
				})
			},
		}
	}
</script>


<style lang="scss">
	@import url("@/static/js/ol.css");

	html,
	body {
		height: 100vh;
		width: 100vw
	}


	#olMap {
		position: relative;
		width: 100vw;
		height: 100vh;
	}
</style>

参考:https://blog.csdn.net/weixin_40043172/article/details/126875789;https://www.bilibili.com/video/BV1Su411q7pz/?spm_id_from=333.788.top_right_bar_window_history.content.click

  • 3
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
要在uniapp引入天地图,需要按照以下步骤进行操作: 1. 在uniapp项目中的static目录下,新建一个名为”tdt“的文件夹,将天地图的相关文件放入其中。你可以在天地图官网下载相关文件,包括地图服务API、样式文件等。 2. 在App.vue文件中引入天地图的样式文件,代码如下: ```html <style> @import url("/static/tdt/style.css"); </style> ``` 3. 在需要使用天地图的页面中,引入天地图的JS文件和CSS文件。例如,在index.vue页面中,可以在<template>标签内添加以下代码: ```html <template> <div class="map-container"> <div id="map"></div> </div> </template> <script> import "@/static/tdt/TDTMap.js"; import "@/static/tdt/TDTMap.css"; export default { mounted() { this.initMap(); }, methods: { initMap() { // 初始化地图 let map = new T.Map("map"); // 设置地图中心点和缩放级别 map.centerAndZoom(new T.LngLat(116.404, 39.915), 13); // 添加控件 map.addControl(new T.Control.Scale()); map.addControl(new T.Control.OverviewMap()); map.addControl(new T.Control.MapType()); }, }, }; </script> ``` 4. 在以上代码中,initMap()方法用于初始化地图,设置地图中心点和缩放级别。这里的地图对象使用了TDTMap.js中提供的T.Map类。 5. 最后,可以在页面中添加一个div元素,用于显示地图。在上述代码中,div元素的id为”map“,样式可以在style.css文件中进行设置。 完成以上步骤后,就可以在uniapp项目中使用天地图了。
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值