LeafLet图层控制

该博客演示了如何使用Leaflet库在HTML中创建地图,并添加多个标记点。同时,通过引入不同的地图瓦片服务,实现了白天和黑夜两种风格的切换。利用L.control.layers功能,用户可以在地图上自由切换城市标记和不同背景地图风格。
摘要由CSDN通过智能技术生成
<!DOCTYPE html>
<html>

	<head>
		<meta charset="UTF-8">
		<title>图层控制</title>
		<link rel="stylesheet" type="text/css" href="../leaflet/iclient9-leaflet.css" />
		<script type="text/javascript" src="../leaflet/include-leaflet.js"></script>
		<script src='../js/jquery.js'></script>
		<style>
			html,
			body {
				height: 100%;
				margin: 0;
			}			
			#map {
				width: 100%;
				height: 100%;
			}
		</style>
	</head>

	<body>
		<div id='map'></div>
		<script>
			var cities = L.layerGroup();
			L.marker([39.61, -105.02]).bindPopup('This is Littleton, CO.').addTo(cities),
				L.marker([39.74, -104.99]).bindPopup('This is Denver, CO.').addTo(cities),
				L.marker([39.73, -104.8]).bindPopup('This is Aurora, CO.').addTo(cities),
				L.marker([39.77, -105.23]).bindPopup('This is Golden, CO.').addTo(cities);
			var	mbUrl = 'https://api.mapbox.com/styles/v1/{id}/tiles/{z}/{x}/{y}?access_token=pk.eyJ1IjoibWFwYm94IiwiYSI6ImNpejY4NXVycTA2emYycXBndHRqcmZ3N3gifQ.rJcFIG214AriISLbB6B5aw';
			var grayscale = L.tileLayer(mbUrl, {
				id: 'mapbox/light-v9',
				tileSize: 512,
				zoomOffset: -1,					
			});
			var	streets = L.tileLayer(mbUrl, {
				id: 'mapbox/streets-v11',
				tileSize: 512,
				zoomOffset: -1,
			});

			var map = L.map('map', {
				center: [39.73, -104.99],
				zoom: 10,
				layers: [grayscale, cities]
			});

			var baseLayers = {//默认加载数组的第一个tileLayer
				"<span style='color: red'>白天</span>": grayscale,//可添加样式
				"黑夜": streets
			};

			var overlays = {
				"Cities": cities
			};
			//第二个参数可省略。第一个参数可以为null,用于只控制overlays 
			L.control.layers(baseLayers,overlays).addTo(map);
		</script>

	</body>

</html>
Vue.jsLeaflet 是两个流行的前端开发框架,Vue用于构建用户界面,而Leaflet是一个强大的JavaScript库,专用于创建交互式的地图应用。要在Vue项目中结合Leaflet实现图层控制,你可以按照以下步骤操作: 1. **安装依赖**:首先,在Vue项目中通过npm或yarn安装`vue-leaflet`插件,这将提供Leaflet组件的集成支持。例如: ```bash npm install vue-leaflet leaflet --save ``` 2. **引入并配置**:在你的Vue组件中导入`VueMap`组件,并在`<template>`中添加一个`<div>`来容纳地图: ```html <template> <div id="map" ref="map"></div> </template> ``` 3. **设置地图**: ```javascript <script> import { VueMap } from 'vue-leaflet'; export default { components: { VueMap }, data() { return { map: null, layers: [ // 初始化地图所需的图层列表 { name: '基础图层', layer: L.tileLayer('https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png', { attribution: '© <a href="https://www.openstreetmap.org/copyright">OpenStreetMap</a> contributors' }) } ] }; }, mounted() { this.map = new VueMap({ el: '#map', center: [51.505, -0.09], // 地理坐标 zoom: 13, layers: this.layers }); } }; </script> ``` 4. **图层控制**:在Vue中可以动态管理图层,比如添加、删除或者显示隐藏。你可以为每个图层设置一个开关,监听用户的操作来控制图层状态。 ```html <template> ... <button v-for="(layer, index) in layers" :key="index" @click="toggleLayer(layer.name)"> {{ layer.name }} </button> ... </template> <script> ... methods: { toggleLayer(name) { this.map.layers.eachLayer((layer) => { if (layer.options.name === name) { layer.setOpacity(!layer.getOpacity()); layer.setVisible(!layer.getVisible()); } }); } } ... </script> ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值