在MapTalks中,繪制面(Polygon)并設置其圖形樣式可以非常靈活,以下是一個簡化的創(chuàng)建帶有自定義樣式的面要素的示例:
// 初始化地圖與矢量圖層 var map = new maptalks.Map('map', {...}); // 省略地圖配置項 var vectorLayer = new maptalks.VectorLayer('vector').addTo(map); // 創(chuàng)建一個面要素(例如多邊形) var polygonCoordinates = [ [116.404, 39.915], // 多邊形頂點坐標數組... ... ]; var polygon = new maptalks.Polygon(polygonCoordinates, { // 設置面的樣式 symbol: { 'polygonFill': '#f03', // 填充顏色 'polygonOpacity': 0.8, // 填充透明度 'lineWidth': 2, // 邊框線寬 'lineColor': '#ff0000', // 邊框線顏色 'lineDasharray': [4, 4], // 虛線樣式(可選) }, properties: { // 可選,添加自定義屬性 'name': '區(qū)域名稱' } }); // 將面要素添加到矢量圖層 vectorLayer.addGeometry(polygon);
此外,MapTalks還支持更復雜的樣式,如漸變填充、圖案填充等。例如,如果要為面設置漸變填充,可以這樣做:
symbol: { 'polygonFillPatternFile': 'path/to/gradient.png', // 漸變圖片路徑 // 或使用內置漸變 'polygonFillGradient': { 'type': 'radial', 'center': [0.5, 0.5], 'radius': 0.5, 'stops': [[0, 'red'], [1, 'blue']] }, // 其他樣式保持不變 }
確保根據實際需求調整樣式參數以獲得所需效果。
<!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://unpkg.com/maptalks/dist/maptalks.css"> <script type="text/javascript" src="https://unpkg.com/maptalks/dist/maptalks.min.js"></script> <body> <div id="map" class="container"></div> <script> var map = new maptalks.Map('map', { center: [-0.113049,51.49856], zoom: 13, 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>' }) }); var layer = new maptalks.VectorLayer('vector').addTo(map); var rect = new maptalks.Rectangle( [-0.143049,51.50856], 4250, 3000, { symbol:{ 'polygonFill' : 'rgb(135,196,240)', 'polygonOpacity' : 1, 'lineColor' : '#1bbc9b', 'lineWidth' : 6, 'lineJoin' : 'round', //miter, round, bevel 'lineCap' : 'round', //butt, round, square 'lineDasharray' : null,//dasharray, e.g. [10, 5, 5] 'lineOpacity ' : 1 } } ).addTo(layer); </script> </body> </html>
評論可見,查看隱藏內容
本文內容根據網絡資料整理,出于傳遞更多信息之目的,不代表金鑰匙跨境贊同其觀點和立場。
轉載請注明,如有侵權,聯(lián)系刪除。