完整demo在底部,此部分为文字注释版本
<!DOCTYPE html> <html> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1"> <title>地图 - 限制地图区域</title> <style type="text/css"> html,body{margin:0px;height:100%;width:100%} .container{width:100%;height:100%} </style> <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/maptalks/dist/maptalks.css"> <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/maptalks/dist/maptalks.min.js"></script> <body> <div id="map" class="container"></div>
<div id="map2" class="map2"></div>
<!-- <canvas id="map" class="map"></canvas> -->
<div class="text">
<p>mapCenter:{{mapCenter}}</p>
<p>zoom:{{zoom}}</p>
<p>minZoom:{{minZoom}}</p>
<p>maxZoom:{{maxZoom}}</p>
<p>extent:{{extent}}</p>
<p>bearing:{{bearing}}</p>
</div>
// 地图实例放在canvas里
<canvas width=600 height=300 id="map" style="border:1px solid"> <script> var map = new maptalks.Map('map', { center: [-0.113049,51.498568], // 地图中心坐标 zoom: 14, // 缩放比例
dragPitch : true, // 是否开始鼠标拖动偏移(左键) dragRotate : true, // 是否开启鼠标拖动旋转(右键或者ctrl+左键)
zoomControl : true, // add zoom control // 添加缩放比例控件
seamlessZoom: true,// 细微缩放,官方说由此控制是否使用无缝缩放模式(并未搞清楚有何区别)
scaleControl : true, // add scale control // 比例尺控件 overviewControl : true, // add overview control // 缩略图控件
centerCross : true, // 地图中心显示红色十字符号 baseLayer: new maptalks.TileLayer('base', { urlTemplate: 'https://{s}.basemaps.cartocdn.com/light_all/{z}/{x}/{y}.png', subdomains: ['a','b','c','d'], attribution: '© <a href="http://osm.org">OpenStreetMap</a> contributors, © <a href="https://carto.com/">CARTO</a>' }), layers : [ new maptalks.VectorLayer('v') ] }); var extent = map.getExtent();// 获取地图范围 // set map's max extent to map's extent at zoom 14 map.setMaxExtent(extent); // 限制最大地图范围 map.setZoom(map.getZoom() - 2, { animation : false });// 更改缩放比例 map.getLayer('v') .addGeometry( // 添加新的几何图形 new maptalks.Polygon(extent.toArray(), { 新的多边形 symbol : { 'polygonOpacity':