完整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':