leaflet获取当前地图比例尺参数

<!DOCTYPE html>
<html>
<head>
	
	<title>Quick Start - Leaflet</title>

	<meta charset="utf-8" />
	<meta name="viewport" content="width=device-width, initial-scale=1.0">
	
	<link rel="shortcut icon" type="image/x-icon" href="docs/images/favicon.ico" />

    <link rel="stylesheet" href="https://unpkg.com/leaflet@1.7.1/dist/leaflet.css" integrity="sha512-xodZBNTC5n17Xt2atTPuE1HxjVMSvLVW9ocqUKLsCC5CXdbqCmblAshOMAS6/keqq/sMZMZ19scR4PsZChSR7A==" crossorigin=""/>
    <script src="https://unpkg.com/leaflet@1.7.1/dist/leaflet.js" integrity="sha512-XQoYMqMTK8LvdxXYG3nZ448hOEQiglfqkJs1NOQV44cWnUrBc8PkAOcXy20w0vlaXaVUearIOBhiXZ5V3ynxwA==" crossorigin=""></script>


	
</head>
<body>



<div id="mapid" style="width:1900px; height: 900px;"></div>
<script>

	var mymap = L.map('mapid').setView([51.505, -0.09], 13);

	L.tileLayer('https://api.mapbox.com/styles/v1/{id}/tiles/{z}/{x}/{y}?access_token=pk.eyJ1IjoibWFwYm94IiwiYSI6ImNpejY4NXVycTA2emYycXBndHRqcmZ3N3gifQ.rJcFIG214AriISLbB6B5aw', {
		maxZoom: 18,
		attribution: 'Map data &copy; <a href="https://www.openstreetmap.org/">OpenStreetMap</a> contributors, ' +
			'<a href="https://creativecommons.org/licenses/by-sa/2.0/">CC-BY-SA</a>, ' +
			'Imagery © <a href="https://www.mapbox.com/">Mapbox</a>',
		id: 'mapbox/streets-v11',
		tileSize: 512,
		zoomOffset: -1
	}).addTo(mymap);

	L.marker([51.5, -0.09]).addTo(mymap)
		.bindPopup("<b>Hello world!</b><br />I am a popup.").openPopup();

	L.circle([51.508, -0.11], 500, {
		color: 'red',
		fillColor: '#f03',
		fillOpacity: 0.5
	}).addTo(mymap).bindPopup("I am a circle.");

	L.polygon([
		[51.509, -0.08],
		[51.503, -0.06],
		[51.51, -0.047]
	]).addTo(mymap).bindPopup("I am a polygon.");

	L.control.scale({maxWidth:1000,metric:true,imperial:false}).addTo(mymap);

	var popup = L.popup();

	function onMapClick(e) {
		popup
			.setLatLng(e.latlng)
			.setContent("You clicked the map at " + e.latlng.toString())
			.openOn(mymap);
	}

	mymap.on('click', onMapClick);
	

	mymap.on("zoomend", e => {
	var scale = document.getElementsByClassName('leaflet-control-scale-line')[0].innerHTML;
	var num = parseInt(scale);
	
		if(scale.includes('km')){
			console.log('1:'+num * 1000+'m')
		}else{
			console.log('1:'+num+'m')
		}
	   //获取当前放大或者缩小的等级
	   console.log(e.target.getZoom());
	})
</script>



</body>
</html>

 

### 集成 SuperMap iClient for Leaflet 到 Vue 项目 #### 安装必要的依赖库 为了在 Vue 项目中集成并使用 SuperMap iClient for Leaflet,首先需要安装基础的地图库 `leaflet` 和特定于超图的扩展包 `@supermap/iclient-leaflet`。通过命令行工具执行以下操作可以完成这些软件包的安装: ```bash npm install leaflet --save npm install @supermap/iclient-leaflet --save ``` 此外,在现代前端框架如 Vue 中推荐采用按需加载的方式引入组件以优化性能,因此还需要安装 Babel 插件用于支持模块化导入: ```bash npm install @supermap/babel-plugin-import -D ``` 以上步骤确保了项目能够正确识别和处理来自 SuperMap 的地理空间数据服务[^1][^2]。 #### 初始化地图实例 一旦所有必需的依赖项都已成功添加到项目当中,则可以在 Vue 组件内部初始化一个新的 L.Map 对象作为底图容器,并设置其初始视图参数(中心点经纬度以及缩放级别)。下面是一个简单的例子展示如何创建一个基本的地图对象: ```javascript import { onMounted } from 'vue'; import * as L from 'leaflet'; export default { setup() { let map; onMounted(() => { const center = [39.9087, 116.3975]; // 北京市经纬度坐标 const zoomLevel = 13; // 地图默认显示比例尺 // 创建地图实例并挂载至指定DOM节点上 map = L.map('map').setView(center, zoomLevel); // 添加瓦片层作为背景地图 L.tileLayer('https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png', { attribution: '© OpenStreetMap contributors' }).addTo(map); console.log("地图已经成功加载"); }); return {}; } } ``` 这段代码展示了如何利用生命周期钩子函数 `onMounted()` 来确保 DOM 已经完全渲染后再尝试访问页面上的元素;同时也演示了怎样向地图添加开放街道地图 (OSM) 提供的基础矢量切片服务。 #### 加入SuperMap 数据源和服务调用 当完成了上述准备工作之后就可以进一步探索更多高级特性了,比如连接到远程 GIS 平台获取动态更新的数据集或者执行空间查询分析任务等等。这里给出一段示范性的 JavaScript 片段说明如果借助 SuperMap REST API 获取 WMTS 图像资源并将它们叠加绘制出来: ```javascript // 假设已经在前面定义好了全局变量'map' const wmtsUrlTemplate = "http://localhost:8090/iserver/services/map-world/rest/maps/World/wmtscache"; L.supermap.tiledMapLayer(wmtsUrlTemplate).addTo(map); console.log("WMTS图层已被添加到当前地图!"); ``` 此部分实现了从本地部署的服务端口请求世界范围内的栅格图像片段,并将其无缝拼接在一起形成完整的全球视野[^3]。 #### 解决可能出现的问题 值得注意的是,在某些情况下按照官方文档指引配置天地图影像可能会遇到兼容性障碍。这是因为不同版本之间可能存在细微差异导致预期行为无法正常工作。针对此类情况建议开发者仔细阅读相关技术博客文章寻找解决方案,例如调整坐标转换逻辑或修改样式表规则等措施均有助于克服潜在困难[^4]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一碗老面i

你的鼓励是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值