欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Leaflet 基礎(chǔ)入門教程示例

 更新時間:2023年01月04日 14:26:40   作者:摸魚的湯姆  
這篇文章主要為大家介紹了Leaflet 基礎(chǔ)入門教程示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪

什么是Webgis?

webGis又稱之為網(wǎng)絡(luò)地理信息系統(tǒng),GIS的全名是Geographic Information System,它是在計算機硬件,軟件系統(tǒng)支持下,對整個或部分地球表層空間中的有關(guān)地理分布數(shù)據(jù)進行采集,儲存,管理,運算,分析,顯示和描述的技術(shù)系統(tǒng)。

地圖是GIS的表現(xiàn)形式,但是GIS深層是空間信息的處理,簡單說就是將GIS這門學(xué)科所能提供的功能,以B/S技術(shù)展現(xiàn)給用戶,使用戶只需要在瀏覽器上便能使用這些GIS功能的一個應(yīng)用方向。

什么是Leaflet?

Leafet 作為 webGis 主流框架之一,Leaflet 是一個開源并且對移動端友好的交互式地圖 JavaScript 庫。 它大小僅僅只有39 KB, 并且擁有絕大部分開發(fā)者所需要的所有地圖特性。

在Vue中安裝Leaflet,與其他依賴

// leaflet 核心庫
npm install leaflet   
// 地圖瓦片
npm install leaflet.chinatmsproviders
// 動態(tài)線
npm install leaflet-ant-path
// 側(cè)邊欄工具庫
npm install @geoman-io/leaflet-geoman-free 

在App.vue中使用

import L from "leaflet";
import "leaflet.chinatmsproviders"; // 插件可加載各種地圖(如:智圖地圖,谷歌地圖,高德地圖等包含衛(wèi)星地圖)
import "leaflet-ant-path"; //動態(tài)線條插件
import "leaflet/dist/leaflet.css";
import imgs from "@/assets/svg/logo.svg";
import "@geoman-io/leaflet-geoman-free";
import "@geoman-io/leaflet-geoman-free/dist/leaflet-geoman.css";

初始化地圖

    methods:{
         initMap(){
             let _this = this;
            this.map = L.map("map", {
            attributionControl: true,  // 是否版權(quán)
            closePopupOnClick: false,  // 點擊畫布是否直接隱藏彈窗
            maxZoom: 13,               // 最大縮放  
            minZoom: 3,                // 最小縮放
            noWrap: false,             // 該層是否包裹在逆子午線周圍 
            worldCopyJump: true,       // 拷貝當(dāng)前配置
            renderer: L.svg(),         // 矢量渲染 
            }); 
         }
    }

chinaProvider地圖瓦片

// 設(shè)置需要引入的地圖瓦片
// 其他材質(zhì)包括(天地圖,百度,...) git地址:https://github.com/htoooth/Leaflet.ChineseTmsProviders 
L.tileLayer?.chinaProvider('Geoq.Normal.PurplishBlue').addTo(this.map);
// 設(shè)置中心點與縮放層級
this.map.setView([41.02999636902566, 108.984375], 3);

addControls使用工具集

 this.map.pm.addControls({
        position: "topleft",
        drawCircle: false,
  });

attribution創(chuàng)建自定義版權(quán)

const attrs = L.control.attribution({ prefix: "Leafet地圖" });
      attrs.addTo(this.map);

Marker創(chuàng)建點

  • 首先在data中定義兩個layers組
  data(){
        return{
                // layerGroup 圖層組主要用于添加標(biāo)點與線段對象
                LineGroupLayer: L.layerGroup([]),
                MakerGroupLayer: L.layerGroup([]),
        }
    }
  • 定義點
// 定義圖標(biāo)
const icons = L.icon({
    iconUrl: imgs,
    iconSize: [20, 20],
    iconAnchor: [5, 5],
    shadowSize: [0, 0],
    });
// 創(chuàng)建點實例 將經(jīng)緯度傳入,并在該點位顯示圖標(biāo)
let makerStart = L.marker([50.5, 30.5],{ icon: icons });
// 添加圖
this.MakerGroupLayer.addLayer(makerStart); 
this.map.addLayer(this.MakerGroupLayer); // 添加點   

創(chuàng)建線

let paths = [
        [35.485106, 123.078832],
        [26.787026, 126.104039],
        [22.847052, 126.281993],
        [18.999909, 126.578654],
      ]; //隨便打的點
let lineLayer = L.polyline.antPath(paths, {
    // 線
    paused: false, //暫停  初始化狀態(tài)
    reverse: false, //方向反轉(zhuǎn)
    delay: 1000, //延遲,數(shù)值越大效果越緩慢
    dashArray: [10, 20], //間隔樣式
    weight: 2, //線寬
    opacity: 0.7, //透明度
    color: "red",
    pulseColor: "#fff", //塊顏色
    });
this.LineGroupLayer.addLayer(lineLayer);
this.map.addLayer(this.LineGroupLayer); // 添加線

Polygon創(chuàng)建三角形

  let multipolygon = new L.Polygon(
        [
          [
            [17.385044, 78.486671],
            [16.506174, 80.648015],
            [17.686816, 83.218482],
          ],
        ],
        {
          color: "rgba(0,0,255,.7)",
          weight: 1,
        }
      );
      multipolygon.addTo(this.map);

Popup彈窗&Tooltip提示

  • Popup
// 自定義popup,并顯示圖片
var popup = L.popup()
        .setLatLng([e.latlng.lat, e.latlng.lng])
        .setContent(`<p>Hello world!<br />This is a nice popup.</p><img src="${imgs}"/>`)
        .openOn(_this.map); 
  • Tooltip
// 定義圖標(biāo)
const icons = L.icon({
    iconUrl: imgs,
    iconSize: [20, 20],
    iconAnchor: [5, 5],
    shadowSize: [0, 0],
    });
let popupDom =
    "<div class='pop-data'><ul><li class='time'><span>這是一個點:</span>" +
    "</li><li><span>內(nèi)容...</span>" +
    "</li><li><span>內(nèi)容...</span>" +
    "</li></ul></div>"; //   綁定popup
let makerEnd = L.marker([17.686816, 83.218482], {
    icon: icons,
    }).bindTooltip(popupDom); 
this.MakerGroupLayer.addLayer(makerEnd);            

Geojson區(qū)域描邊

首先需要我們在(DataV)[datav.aliyun.com/portal/scho…

//  引入Geojson的json文件,這里直接將文件展開了,在項目中不應(yīng)該這么做
 let Geojson = {
        type: "FeatureCollectio", 
        properties: { zhName: "河北省", name: "Hebei" },
        geometry: {
          type: "MultiPolygon",
          coordinates: [
            [
              [116.365069,40.943216],
              [116.37641,40.939681],
              [116.398515,40.905999]
              ....
            ],
          ],
        },
      }; 
      L.geoJSON(Geojson, style: {
          weight: 2, //邊框粗細
          opacity: 0.4, //透明度
          fillColor: 'transparent', //區(qū)域填充顏色
          fillOpacity: 0.3, //區(qū)域填充顏色的透明
        }).addTo(this.map);

總結(jié)

根據(jù)上面的例子總結(jié)到Leaflet框架設(shè)計簡單,而且官方提供很多插件、具有高擴展性、性能良好和可用性強等特點。它可以在所有主流的桌面和移動平臺上高效運行,能夠利用主流瀏覽器中利用HTML5和CSS3的優(yōu)勢的同時也兼容老版本瀏覽器,更加適合移動端,但是只支持2D地圖,不支持3d地圖。

以上就是Leaflet 基礎(chǔ)入門教程示例的詳細內(nèi)容,更多關(guān)于Leaflet 基礎(chǔ)的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • webstorm中配置Eslint的兩種方式及差異比較詳解

    webstorm中配置Eslint的兩種方式及差異比較詳解

    這篇文章主要介紹了webstorm中配置Eslint的兩種方式及差異比較詳解,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-10-10
  • Js如何使用ffmpeg進行視頻剪輯和畫面截取等功能

    Js如何使用ffmpeg進行視頻剪輯和畫面截取等功能

    在日常處理視頻文件時常常會用到視頻片段的截取功能,FFmpeg支持該功能,下面這篇文章主要給大家介紹了關(guān)于Js如何使用ffmpeg進行視頻剪輯和畫面截取等功能的相關(guān)資料,需要的朋友可以參考下
    2024-04-04
  • Bootstrap表單使用方法詳解

    Bootstrap表單使用方法詳解

    這篇文章主要為大家詳細介紹了Bootstrap表單使用方法,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-02-02
  • 詳解JavaScript 事件流

    詳解JavaScript 事件流

    這篇文章主要介紹了JavaScript 事件流的相關(guān)資料,幫助大家更好的理解和學(xué)習(xí)JavaScript,感興趣的朋友可以了解下
    2020-09-09
  • Summernote實現(xiàn)圖片上傳功能的簡單方法

    Summernote實現(xiàn)圖片上傳功能的簡單方法

    下面小編就為大家?guī)硪黄猄ummernote實現(xiàn)圖片上傳功能的簡單方法。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2016-07-07
  • js中checkbox的使用教程(取值、賦值、判斷是否選中)

    js中checkbox的使用教程(取值、賦值、判斷是否選中)

    在checkbox的使用中,我們經(jīng)常遇到需要全選或者單選的情況,下面這篇文章主要給大家介紹了關(guān)于js中checkbox使用(取值、賦值、判斷是否選中)的相關(guān)資料,文中通過代碼介紹的非常詳細,需要的朋友可以參考下
    2024-07-07
  • layui-table獲得當(dāng)前行的上/下一行數(shù)據(jù)的例子

    layui-table獲得當(dāng)前行的上/下一行數(shù)據(jù)的例子

    今天小編就為大家分享一篇layui-table獲得當(dāng)前行的上/下一行數(shù)據(jù)的例子,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-09-09
  • JavaScript中的this妙用實例分析

    JavaScript中的this妙用實例分析

    這篇文章主要介紹了JavaScript中的this妙用,結(jié)合實例形式分析了JavaScript中的this基本功能、用法及操作注意事項,需要的朋友可以參考下
    2020-05-05
  • JavaScript?異步函數(shù)?Promisification?處理詳情

    JavaScript?異步函數(shù)?Promisification?處理詳情

    這篇文章主要介紹了JavaScript異步函數(shù)Promisification處理詳情,文章圍繞主題展開詳細的內(nèi)容介紹,具有一定的參考價值,需要的小伙伴可以參考一下
    2022-08-08
  • 移動端觸摸滑動插件swiper使用方法詳解

    移動端觸摸滑動插件swiper使用方法詳解

    這篇文章主要為大家詳細介紹了移動端觸摸滑動插件swiper的使用方法,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-08-08

最新評論