欧美free性护士vide0shd,老熟女,一区二区三区,久久久久夜夜夜精品国产,久久久久久综合网天天,欧美成人护士h版

目錄

maptalks繪制端點(diǎn)沿線自動旋轉(zhuǎn)Marker圖形樣式

在 MapTalks 中,如果你希望端點(diǎn)沿線自動旋轉(zhuǎn)的 Marker 圖形樣式,可以使用 `Marker` 類結(jié)合線要素的路徑方向來實(shí)現(xiàn)動態(tài)旋轉(zhuǎn)。下面是一個示例:

// 假設(shè)已經(jīng)引入了 maptalks 庫并創(chuàng)建了地圖實(shí)例
// 定義一個 Marker 的構(gòu)造函數(shù),其中包含自動旋轉(zhuǎn)的邏輯
function RotatingMarker(path, options) {
    this._path = path; // 線要素路徑坐標(biāo)數(shù)組
    maptalks.Marker.call(this, path[0], options); // 初始化 Marker 在線的第一個點(diǎn)上
}
RotatingMarker.prototype = new maptalks.Marker();
RotatingMarker.prototype.constructor = RotatingMarker;
// 重寫 'onAdd' 方法,在添加到地圖時計算并設(shè)置 Marker 的旋轉(zhuǎn)角度
RotatingMarker.prototype.onAdd = function (layer) {
    maptalks.Marker.prototype.onAdd.call(this, layer);
    const angle = this.calculateRotationAngle(this._path);
    this.setSymbol({
        markerType: 'ellipse',
        // 其他 Marker 樣式配置...
        rotation: -angle,
        // 注意:MapTalks 中旋轉(zhuǎn)是逆時針為正,所以這里通常需要取負(fù)值
    });
};
// 計算 Marker 應(yīng)該旋轉(zhuǎn)的角度
RotatingMarker.prototype.calculateRotationAngle = function (path) {
    if (path.length < 2) return 0;
    
    const start = maptalks.Coordinate.toPoint(path[0]);
    const end = maptalks.Coordinate.toPoint(path[path.length - 1]);
    const dx = end.x - start.x;
    const dy = end.y - start.y;
    const radian = Math.atan2(dy, dx);
    const degree = radian * 180 / Math.PI;
    return degree;
};
// 創(chuàng)建帶有自動旋轉(zhuǎn) Marker 的線要素
const lineString = new maptalks.LineString(
    [
        [116.39, 39.9],
        [116.40, 39.91],
        // 更多坐標(biāo)點(diǎn)...
    ]
);
// 創(chuàng)建自定義的 RotatingMarker 實(shí)例,并添加到圖層中
const rotatingMarker = new RotatingMarker(lineString.getCoordinates(), {
    draggable: false, // 可根據(jù)需求調(diào)整 Marker 是否可拖動
    symbol: { // Marker 的基礎(chǔ)樣式
        markerType: 'ellipse',
        radius: 10,
        fillColor: '#ff0000',
        fillOpacity: 1,
        strokeColor: '#ffffff',
    }
});
const vectorLayer = new maptalks.VectorLayer('vector').addTo(map);
vectorLayer.addGeometry(rotatingMarker);

這個示例中,我們首先定義了一個繼承自 `maptalks.Marker` 的自定義類 `RotatingMarker`,并在其 `onAdd` 方法中計算起點(diǎn)和終點(diǎn)之間的角度差,并據(jù)此設(shè)置 Marker 的旋轉(zhuǎn)角度。

請注意,上述代碼僅展示了基本思路,實(shí)際應(yīng)用中可能需要處理更多邊界情況,比如多個折線段的情況,以及對 Marker 進(jìn)行動態(tài)更新以適應(yīng)線段的變化等。

<!DOCTYPE html>
<html>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1">
  <title>圖形樣式 - 端點(diǎn)沿線自動旋轉(zhuǎn)Marker</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: [2.3039431874999536, 50.97239313116968],
        zoom: 7,
        baseLayer: new maptalks.TileLayer('base', {
          urlTemplate: 'https://{s}.basemaps.cartocdn.com/light_all/{z}/{x}/{y}.png',
          subdomains: ['a','b','c','d'],
          attribution: '&copy; <a href="http://osm.org">OpenStreetMap</a> contributors, &copy; <a href="https://carto.com/">CARTO</a>'
        })
      });
      var layer = new maptalks.VectorLayer('vector').addTo(map);
      var line = new maptalks.LineString(
        [
          [4.460010082031204, 50.41204897711654],
          [3.7129397695312036, 51.05869036408862],
          [3.2295413320312036, 51.20347195727524],
          [1.0872073476562036, 51.27225609350862],
          [-0.15424773046879636, 51.5053534272480]
        ],
        {
          symbol:{
            'lineColor' : '#1bbc9b',
            'lineWidth' : 3,
            'lineDasharray' : [10, 10],
            'markerFile'  : 'plane.png',
            'markerPlacement' : 'vertex', //vertex, point, vertex-first, vertex-last, center
            'markerVerticalAlignment' : 'middle',
            'markerWidth'  : 30,
            'markerHeight' : 30
          }
        }
      ).addTo(layer);
    </script>
  </body>
</html>
評論可見,查看隱藏內(nèi)容


本文內(nèi)容根據(jù)網(wǎng)絡(luò)資料整理,出于傳遞更多信息之目的,不代表金鑰匙跨境贊同其觀點(diǎn)和立場。

轉(zhuǎn)載請注明,如有侵權(quán),聯(lián)系刪除。

本文鏈接:http://gantiao.com.cn/post/18504466.html

發(fā)布評論

您暫未設(shè)置收款碼

請在主題配置——文章設(shè)置里上傳

掃描二維碼手機(jī)訪問

文章目錄