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

基于Vue+Openlayer實現動態(tài)加載geojson的方法

 更新時間:2021年09月01日 17:02:25   作者:~疆  
本文通過實例代碼給大家介紹基于Vue+Openlayer實現動態(tài)加載geojson的方法,代碼簡單易懂,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友參考下吧

加載1個或多個要素

<template>
  <div id="map" style="width: 100vw; height: 100vh"></div>
</template>
<script>
import "ol/ol.css";
import TileLayer from "ol/layer/Tile";
import VectorLayer from "ol/layer/Vector";
import VectorSource from "ol/source/Vector";
import XYZ from "ol/source/XYZ";
import { Map, View, Feature, ol } from "ol";
import { Style, Stroke, Fill } from "ol/style";
import { Polygon, MultiPolygon } from "ol/geom";
 
import areaGeo from "@/assets/chengdu.json";
 
export default {
  data() {
    return {
      map: {},
      areaLayer: {},
    };
  },
  mounted() {
    this.initMap(); //初始化地圖方法
    this.addArea(areaGeo); //添加區(qū)域圖層方法
    this.pointMove();
    this.getFeatureByClick();
  },
  methods: {
    pointMove() {
      // 設置鼠標劃過矢量要素的樣式
      this.map.on("pointermove", (e) => {
        const isHover = this.map.hasFeatureAtPixel(e.pixel);
        this.map.getTargetElement().style.cursor = isHover ? "pointer" : "";
      });
    },
    getFeatureByClick() {
      this.map.on("click", (e) => {
        let features = this.map.getFeaturesAtPixel(e.pixel);
        this.map.getView().fit(features[0].getGeometry(), {
          duration: 1500,
          padding: [100, 100, 100, 100],
        });
      });
    },
    /**
     * 設置區(qū)域
     */
    addArea(geo = {}) {
      if (Object.keys(geo).length == 0 && geo.features.length == 0) return;
 
      // 設置圖層
      this.areaLayer = new VectorLayer({
        source: new VectorSource({
          features: [],
        }),
      });
      // 添加圖層
      this.map.addLayer(this.areaLayer);
 
      let features = geo.features;
 
      for (let i in features) {
        let areaFeature = {};
 
        if (features[i].geometry.type == "MultiPolygon") {
          areaFeature = new Feature({
            geometry: new MultiPolygon(features[i].geometry.coordinates),
          });
        } else if (features[i].geometry.type == "Polygon") {
          areaFeature = new Feature({
            geometry: new Polygon(features[i].geometry.coordinates),
          });
        }
        areaFeature.setStyle(
          new Style({
            fill: new Fill({ color: "#4e98f444" }),
            stroke: new Stroke({
              width: 3,
              color: [71, 137, 227, 1],
            }),
          })
        );
        areaFeature.setProperties(features[i].properties);
        this.areaLayer.getSource().addFeature(areaFeature);
      }
    },
    /**
     * 初始化地圖
     */
    initMap() {
      this.map = new Map({
        target: "map",
        layers: [
          new TileLayer({
            source: new XYZ({
              url: "http://map.geoq.cn/ArcGIS/rest/services/ChinaOnlineStreetPurplishBlue/MapServer/tile/{z}/{y}/{x}",
            }),
          }),
        ],
        view: new View({
          projection: "EPSG:4326",
          center: [103, 31],
          zoom: 7,
        }),
      });
    },
  },
};
</script>

到此這篇關于Vue+Openlayer動態(tài)加載geojson的文章就介紹到這了,更多相關Vue Openlayer加載geojson內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • Vue+Axios實現文件上傳自定義進度條

    Vue+Axios實現文件上傳自定義進度條

    這篇文章主要為大家詳細介紹了Vue+Axios實現文件上傳自定義進度條,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-08-08
  • Vue仿今日頭條實例詳解

    Vue仿今日頭條實例詳解

    這篇文章主要介紹了Vue仿今日頭條實例詳解,并把相關代碼做了說明,對此有興趣的朋友參考下吧。
    2018-02-02
  • Vue百度地圖maker標注的添加和刪除方式

    Vue百度地圖maker標注的添加和刪除方式

    這篇文章主要介紹了Vue百度地圖maker標注的添加和刪除方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-03-03
  • vue3 element-plus如何使用icon圖標組件

    vue3 element-plus如何使用icon圖標組件

    這篇文章主要介紹了vue3 element-plus如何使用icon圖標組件問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-03-03
  • 對Vue- 動態(tài)元素屬性及v-bind和v-model的區(qū)別詳解

    對Vue- 動態(tài)元素屬性及v-bind和v-model的區(qū)別詳解

    今天小編就為大家分享一篇對Vue- 動態(tài)元素屬性及v-bind和v-model的區(qū)別詳解,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-08-08
  • vue中axios實現數據交互與跨域問題

    vue中axios實現數據交互與跨域問題

    這篇文章主要介紹了vue中axios實現數據交互與跨域問題,本文通過實例代碼給大家介紹的非常詳細,具有一定的參考借鑒價值 ,需要的朋友可以參考下
    2019-05-05
  • 簡單了解Vue + ElementUI后臺管理模板

    簡單了解Vue + ElementUI后臺管理模板

    這篇文章主要介紹了簡單了解Vue + ElementUI后臺管理模板,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-04-04
  • vue實現圖片預覽放大以及縮小問題

    vue實現圖片預覽放大以及縮小問題

    這篇文章主要介紹了vue實現圖片預覽放大以及縮小問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-01-01
  • 詳解讓sublime text3支持Vue語法高亮顯示的示例

    詳解讓sublime text3支持Vue語法高亮顯示的示例

    本篇文章主要介紹了讓sublime text3支持Vue語法高亮顯示的示例,非常具有實用價值,需要的朋友可以參考下
    2017-09-09
  • vue-cli監(jiān)聽組件加載完成的方法

    vue-cli監(jiān)聽組件加載完成的方法

    今天小編就為大家分享一篇vue-cli監(jiān)聽組件加載完成的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-09-09

最新評論

新兴县| 黄山市| 台东县| 周宁县| 依安县| 雅江县| 东方市| 新乐市| 上虞市| 叙永县| 资源县| 门源| 商河县| 宣化县| 泸水县| 北安市| 宿州市| 增城市| 江陵县| 松原市| 东乌| 莱芜市| 平和县| 阿克陶县| 襄城县| 临泽县| 丹寨县| 曲阳县| 洪泽县| 张家界市| 潞西市| 大港区| 南雄市| 噶尔县| 和林格尔县| 龙海市| 安陆市| 宽甸| 保亭| 平阳县| 永昌县|