最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

openlayers?模仿高德箭頭導(dǎo)航路線(xiàn)圖的代碼詳解

 更新時(shí)間:2022年05月28日 09:53:12   作者:追風(fēng)少兒狼  
這篇文章主要介紹了openlayers?模仿高德箭頭導(dǎo)航路線(xiàn)圖的示例代碼,主要包括原始數(shù)據(jù)、起點(diǎn)/終點(diǎn)尋找、起點(diǎn)和終點(diǎn)樣式函數(shù),結(jié)合示例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下

效果展示

原始數(shù)據(jù)

const routeFeature = {
  type: "Feature",
  geometry: {
    type: "LineString",
    coordinates: [
      [105.9420397836494, 27.911864399055588, 0.0],
      [105.94204506457491, 27.911868653873896, 0.0],
      [105.94203985374624, 27.911863549317346, 0.0],
      [105.9894250218576, 28.057236450358882, 0.0],
      [106.10215274353018, 28.284607012841803, 0.0],
      [106.07371540920602, 28.280436458801173, 0.0],
      [106.07873615012684, 28.28931130115016, 0.0],
      [106.05978977915458, 28.29067898838156, 0.0],
      [106.01532125560543, 28.29250735826644, 0.0],
      [106.11251696408775, 28.335110012326794, 0.0],
      [106.07311049420407, 28.334906534881487, 0.0],
      [106.02507910445651, 28.336362174118438, 0.0],
      [106.02489694766722, 28.359663055160034, 0.0],
      [106.01964893419249, 28.36218521264283, 0.0],
      [106.02051116393352, 28.363011171722473, 0.0],
      [106.02205644084118, 28.363104546940434, 0.0],
      [106.02162537170554, 28.362978005991447, 0.0],
      [106.06032150948916, 28.372102355412082, 0.0],
      [106.04706634723237, 28.410958515915414, 0.0],
      [106.16865262249493, 28.364800431812483, 0.0],
      [106.15259292905644, 28.30510828317908, 0.0],
    ],
  },
};
export{
   routeFeature
}

起點(diǎn)/終點(diǎn)尋找

    const coordinates = routeFeature.geometry.coordinates;
    let start = coordinates[0].slice(0, 2),
     end = coordinates[coordinates.length - 1].slice(0, 2);

起點(diǎn)和終點(diǎn)樣式函數(shù)

function styleFn(text) {
  return new Style({
    image: new Icon({
      src: mark,
      scale: 1,
    }),
    text: new Text({
      textAlign: "center",
      textBaseline: "middle",
      font: "normal 14px 微軟雅黑",
      text,
      fill: new Fill({ color: "#aa3300" }),
      stroke: new Stroke({ color: "#ffcc33", width: 2 }),
      offsetX: 0,
      scale: 1,
      offsetY: 0,
    }),
  });
}

起點(diǎn)和終點(diǎn)layer創(chuàng)建函數(shù)

const Mark = (point, name) => {
  return new VectorLayer({
    style: styleFn(name),
    source: new VectorSource({
      features: [
        new Feature({
          geometryName: "centerMark",
          geometry: new Point(point),
        }),
      ],
    }),
  });
};

路線(xiàn)feature創(chuàng)建

var lineFeature = new GeoJSON({
  geometryName: "line",
}).readFeature(routeFeature.geometry);
const polyLineLayer = new VectorLayer({
  source: new VectorSource({
    features: [lineFeature],
  }),
  style: styleFunction,
});

路線(xiàn)樣式函數(shù)

function styleFunction(featrue, resolution) {
  var geometry = featrue.getGeometry();
  var length = geometry.getLength(); //獲取線(xiàn)段長(zhǎng)度
  var radio = (100 * resolution) / length;
  var dradio = 10000;  //投影坐標(biāo)系,如EPSG3857設(shè)置dradio=1,在EPSG:4326下可以設(shè)置dradio=10000,其他坐標(biāo)系可以調(diào)整
  var styles = [
    new Style({
      stroke: new Stroke({
        color: "green",
        width: 10,
      }),
    }),
  ];
  for (var i = 0; i <= 1; i += radio) {
    var arrowLocation = geometry.getCoordinateAt(i);
    geometry.forEachSegment(function (start, end) {
      if (start[0] == end[0] || start[1] == end[1]) return;
      var dx1 = end[0] - arrowLocation[0];
      var dy1 = end[1] - arrowLocation[1];
      var dx2 = arrowLocation[0] - start[0];
      var dy2 = arrowLocation[1] - start[1];
      if (dx1 != dx2 && dy1 != dy2) {
        if (Math.abs(dradio * dx1 * dy2 - dradio * dx2 * dy1) < 0.001) {
          var dx = end[0] - start[0];
          var dy = end[1] - start[1];
          var rotation = Math.atan2(dy, dx);
          styles.push(
            new Style({
              geometry: new Point(arrowLocation),
              image: new Icon({
                size: toSize([13, 7]),
                src: arrow,
                anchor: [0.5, 0.5],
                rotateWithView: false,
                rotation: -rotation + (Math.PI * 3) / 2, //旋轉(zhuǎn)角度可能跟圖標(biāo)角度有關(guān),自行調(diào)整
              }),
            })
          );
        }
      }
    });
  }
  return styles;
}

初始化地圖生成線(xiàn)路圖

export default {
  name: "arrowMap",
  data() {
    return {
      map: null,
    };
  },
  mounted() {

    let map = new Map({
      // 設(shè)置地圖圖層
      layers: [
        gaodeMapLayer,
        polyLineLayer,
        Mark(start, "起點(diǎn)"),
        Mark(end, "終點(diǎn)"),
      ],
      // 設(shè)置顯示地圖的視圖
      view: new View({
        center: start,
        zoom: 10,
        minZoom: 2,
        maxZoom: 18,
        projection: "EPSG:4326",
        rotation: 0,
      }),
      // 讓id為map的div作為地圖的容器
      target: "arrowMap",
    });
  },
};

到此這篇關(guān)于openlayers 模仿高德箭頭導(dǎo)航路線(xiàn)圖的代碼詳解的文章就介紹到這了,更多相關(guān)openlayers 高德導(dǎo)航路線(xiàn)圖內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 關(guān)于IDEA中Git暫存代碼的使用

    關(guān)于IDEA中Git暫存代碼的使用

    本文主要介紹了關(guān)于IDEA中Git暫存代碼的使用,文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-01-01
  • win10+RTX3050ti+TensorFlow+cudn+cudnn配置深度學(xué)習(xí)環(huán)境的方法

    win10+RTX3050ti+TensorFlow+cudn+cudnn配置深度學(xué)習(xí)環(huán)境的方法

    這篇文章主要介紹了win10+RTX3050ti+TensorFlow+cudn+cudnn配置深度學(xué)習(xí)環(huán)境,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-06-06
  • Git回退代碼到某次commit的實(shí)現(xiàn)方法

    Git回退代碼到某次commit的實(shí)現(xiàn)方法

    這篇文章主要介紹了Git回退代碼到某次commit的實(shí)現(xiàn)方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-07-07
  • Git ssh 配置及使用方法

    Git ssh 配置及使用方法

    這篇文章主要介紹了Git ssh 配置及使用方法,需要的朋友可以參考下
    2017-10-10
  • 關(guān)于401狀態(tài)碼的含義和處理方式

    關(guān)于401狀態(tài)碼的含義和處理方式

    這篇文章主要介紹了關(guān)于401狀態(tài)碼的含義和處理方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-08-08
  • IntelliJ IDEA2020.3 新特性(小結(jié))

    IntelliJ IDEA2020.3 新特性(小結(jié))

    這篇文章主要介紹了IntelliJ IDEA 2020.3 新特性,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2020-12-12
  • Application,Session,Cookies對(duì)象應(yīng)用介紹

    Application,Session,Cookies對(duì)象應(yīng)用介紹

    Application,Session,Cookies對(duì)象比較,對(duì)于客戶(hù)端保存登錄信息的朋友可以參考下。
    2011-05-05
  • CentOS下安裝Jenkins的完整步驟

    CentOS下安裝Jenkins的完整步驟

    Jenkins是一款由Java編寫(xiě)的開(kāi)源的持續(xù)集成工具,下面這篇文章主要介紹了CentOS下安裝Jenkins的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-04-04
  • 水晶報(bào)表 分頁(yè) 的問(wèn)題

    水晶報(bào)表 分頁(yè) 的問(wèn)題

    在論壇上經(jīng)常會(huì)看到水晶報(bào)表分頁(yè)的問(wèn)題,這個(gè)很好解決。但是自動(dòng)插入空白行的問(wèn)題卻一直沒(méi)有很好的答案,經(jīng)過(guò)研究找到一個(gè)變通的辦法來(lái)實(shí)現(xiàn)了。
    2009-04-04
  • Solidity 變量詳解之類(lèi)型、作用域與最佳實(shí)踐記錄

    Solidity 變量詳解之類(lèi)型、作用域與最佳實(shí)踐記錄

    這篇文章主要介紹了Solidity 變量詳解:類(lèi)型、作用域與最佳實(shí)踐,本文結(jié)合實(shí)例代碼給大家介紹的非常詳細(xì),需要的朋友可以參考下
    2024-12-12

最新評(píng)論

泰宁县| 大英县| 永仁县| 武威市| 鄂托克前旗| 广西| 修水县| 天津市| 和龙市| 江永县| 都昌县| 讷河市| 淳化县| 朝阳市| 当阳市| 桓台县| 即墨市| 平顺县| 孟村| 墨竹工卡县| 富蕴县| 博客| 八宿县| 永川市| 高淳县| 荆门市| 石嘴山市| 德昌县| 财经| 梅河口市| 凤山市| 渝中区| 正安县| 盐源县| 西宁市| 白山市| 兖州市| 大厂| 西和县| 静安区| 庆元县|