Leaflet的Vue组件 — Vue2Leaflet

2023-11-06

原文地址:Leaflet的Vue组件 — Vue2Leaflet

这两天折腾Vue,在GitHub上发现了一个开源项目Vue2Leaflet,Vue2Leaflet是一个Vue框架的JavaScript库,封装了Leaflet,它使构建地图变得更简单。本文简单介绍了如何使用该组件,了解更多可查看作者给出的例子Vue-Leaflet-Demo和作者的JSFiddle - Bouchaud Micka

Vue2Leaflet封装的组件

1

Vue 环境

工欲善其事,必先利其器。首先配置好Vue环境。
* 安装 node + git
* 安装 vue-cli脚手架及项目初始化

npm i vue-cli -g
vue init webpack vue-leaflet
cd vue-leaflet
npm run dev

2

  • 访问localhost:8080,出现如下页面即成功。

3

安装Vue2Leaflet及使用

npm i vue2-leaflet -S

新建VueLeaflet.vue

在component文件夹下删除HelloWorld.vue,新建VueLeaflet.vue文件,如下:
4

<template>
  <div class="vue-leaflet">

  </div>
</template>

<script>
export default {
  name: 'VueLeaflet',
  data () {
    return {

    }
  }
}
</script>

<style scoped>

</style>

修改路由

修改index.js,即修改HelloWorld为VueLeaflet(省略了部分代码,后面有完整代码)。

import VueLeaflet from '@/components/VueLeaflet'

export default new Router({
  routes: [
    {
      path: '/',
      name: 'VueLeaflet',
      component: VueLeaflet
    }
  ]
})

添加LMap 组件

<l-map style="width: 100%; height: 600px;" :zoom="zoom" :center="center">
  <l-tile-layer :url="url" :attribution="attribution"></l-tile-layer>
  <l-marker :lat-lng="marker">
    <l-popup :content="text"></l-popup>
  </l-marker>
</l-map> 

引入需要的组件

import { LMap, LTileLayer, LMarker, LPopup } from 'vue2-leaflet';
export default {
  name: 'VueLeaflet',
  components: {
    LMap,
    LTileLayer,
    LMarker,
    LPopup
  },
  data () {
    return {
      zoom: 13,
      center: L.latLng(47.413220, -1.219482),
      url: 'http://{s}.tile.osm.org/{z}/{x}/{y}.png',
      attribution: '&copy; <a href="http://osm.org/copyright">OpenStreetMap</a> contributors',
      marker: L.latLng(47.413220, -1.219482),
      text: 'this is a marker'
    }
  }
}

保存后就可以在浏览器里看到地图了,但是看起来乱七八糟的,跟想象中的不一样,是因为没有引入Leaflet的样式文件。

引入 leaflet.css

在main.js文件中添加:

import 'leaflet/dist/leaflet.css';

添加后,地图是正常显示了,但是你会发现,我明明加了一个marker,为什么没有看到呢?打开控制台就明白了,marker图标没有被正确加载。

修改icon路径

delete L.Icon.Default.prototype._getIconUrl;
L.Icon.Default.mergeOptions({
  iconRetinaUrl: require('leaflet/dist/images/marker-icon-2x.png'),
  iconUrl: require('leaflet/dist/images/marker-icon.png'),
  shadowUrl: require('leaflet/dist/images/marker-shadow.png'),
});

现在打开浏览器看看��
5

最终文件

VueLeaflet.vue

<template>
  <div class="vue-leaflet">
    <l-map style="width: 100%; height: 600px;" :zoom="zoom" :center="center">
      <l-tile-layer :url="url" :attribution="attribution"></l-tile-layer>
      <l-marker :lat-lng="marker">
        <l-popup :content="text"></l-popup>
      </l-marker>
    </l-map> 
  </div>
</template>

<script>
import { LMap, LTileLayer, LMarker, LPopup } from 'vue2-leaflet';

export default {
  name: 'VueLeaflet',
  components: {
    LMap,
    LTileLayer,
    LMarker,
    LPopup
  },
  data () {
    return {
      zoom: 13,
      center: L.latLng(47.413220, -1.219482),
      url: 'http://{s}.tile.osm.org/{z}/{x}/{y}.png',
      attribution: '&copy; <a href="http://osm.org/copyright">OpenStreetMap</a> contributors',
      marker: L.latLng(47.413220, -1.219482),
      text: 'this is a marker'
    }
  }
}
</script>

<style scoped>

</style>

main.js

// The Vue build version to load with the `import` command
// (runtime-only or standalone) has been set in webpack.base.conf with an alias.
import Vue from 'vue'
import App from './App'
import router from './router'
import 'leaflet/dist/leaflet.css';

Vue.config.productionTip = false;

/* leaflet icon */
delete L.Icon.Default.prototype._getIconUrl;
L.Icon.Default.mergeOptions({
  iconRetinaUrl: require('leaflet/dist/images/marker-icon-2x.png'),
  iconUrl: require('leaflet/dist/images/marker-icon.png'),
  shadowUrl: require('leaflet/dist/images/marker-shadow.png'),
});

/* eslint-disable no-new */
new Vue({
  el: '#app',
  router,
  components: { App },
  template: '<App/>'
})

Vue2Leafet 插件

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Leaflet的Vue组件 — Vue2Leaflet 的相关文章

  • 在闪亮的应用程序中使用传单地图作为过滤器

    是否可以使用传单地图来过滤闪亮应用程序中的数据 就像在 Tableau 或 Power BI 中一样 方法是单击地图上的某个状态 然后根据条件过滤另一个图表或表格选择 None
  • 是否可以将自定义 HTML 添加到传单图层组和图层控件

    有什么方法可以将自定义 HTML 注入图层组和图层控件中吗 在我们的应用程序中 我们实现了滑块 输入 范围 来调整不透明度设置 并且很明显 在其控制容器内部的基础层上使用专用滑块是有意义的 没有选项或参数可以修改此控件 理想情况下 我们希望
  • R Leaflet Legend:colorBin-删除中断之间的小数

    我正在使用 Leaflet 库在 R 中创建交互式 HTML 地图 传说中采用的是colorBin用于创建将数据分为 6 个类别的方法 使用min values and max values 我已经定义了美国社区调查收入数据的特定范围可能落
  • 地图路由,像谷歌地图一样吗?

    我一直对地图路由很感兴趣 但我从未找到任何好的入门 甚至高级 级别的教程 有人有任何指示 提示等吗 Update 我主要寻找有关如何实现地图系统 数据结构 算法等 的指导 看看开放街道地图项目 http www openstreetmap
  • 在 R 传单中添加不透明度滑块

    如何在 R leaflet 应用程序中添加滑块来控制特定图层的不透明度 对于这个应用程序 我不想使用闪亮 这里建议 在 R 传单应用程序中添加滑块 https stackoverflow com questions 37682619 add
  • 从 Grib 天气模型中提取数据

    我已经下载了grib1模型数据来自GFS http en wikipedia org wiki Global Forecast System 我使用的是 Mac OS X 并且能够构建wgrib2文件来自NOAA http en wikip
  • 如何设置透明叠加 WMS 图层的样式

    我成功了覆盖WMS层 http blog sumbera com 2010 11 02 tiled wms overlay on google map v3 然而 在谷歌地图v3中 由于图块上的信息是透明的黑色 因此在深色背景 如卫星地图
  • 无需重新绘制传单地图即可进行闪亮的 UI 调整

    问题 我正在创建一个闪亮的仪表板来帮助客户探索一些空间数据 我想要实现的 UI 设计允许用户轻松地在两种布局之间切换 Map Only 地图 数据表 我在实现这种设计时遇到了麻烦 因为每次用户在布局之间切换时都会出现两个问题 地图已重新绘制
  • 类型“typeof Control”上不存在属性“Draw”

    我正在尝试使用传单和其他传单插件实现地图组件 问题是其他插件由于某种原因无法在 TypeScript 上运行 例如 我无法使用 leaflet draw 插件编译代码并收到错误 类型 typeof Control 上不存在属性 Draw 地
  • 我可以在 r 中使用传单“map_shape_click”事件来用数据表填充 box() 吗?

    我已经在网络上搜索了好几个星期 试图找到一个示例或代码来实现我想要用我的闪亮应用程序 shinydashboard 完成的任务 我是 r 的新手 我开始认为我想做的事情是不可能的 我基本上有一个带有县多边形 shapefile 的传单地图
  • 在 R 中修改传单弹出窗口

    我想修改 R 中传单弹出窗口的外观 帮助文件指出 in the popupOptions 函数需要 传递给底层 Javascript 对象构造函数的额外选项 In 这个例子 https rstudio github io leaflet p
  • 传单 - 导入 Geojson - Angular 6

    我尝试将 GeoJson 文件导入到 Angular 的应用程序 6 中的传单中 通过这个解决方案 我的 geojson 是在 leafletmap 中绘制的 但我有这个错误 我无法构建我的应用程序 有人知道一种解决方案吗 错误 TS234
  • 带有 R 传单的自定义图例 - 同一图例中的圆形和正方形

    我想创建一个传单地图 在同一个传单图图例中既有圆形又有正方形 到目前为止 我已经使用了上一篇文章中的建议 并在我闪亮的 UI 代码中添加了以下代码 tags style type text css html body width 100 h
  • 为什么 Leaflet 在 React 中平移和缩放速度这么慢?

    我有一个相当简单的应用程序 使用 leaflet js 渲染大约 3000 个点 它渲染得相当快 但平移和缩放非常慢 看看chrome中的性能工具 看起来大部分时间都花在了重新计算样式上 但这并没有什么帮助
  • 在传单包中使用 popupOptions()

    我正在关注 Robin Lovelace 博客上的传单教程 http robinlovelace net r 2015 02 01 leaflet r package html http robinlovelace net r 2015 0
  • 如何获取传单标记簇中点击事件的图块?

    这是我的代码 function onMapClick e e originalEvent defaultPrevented true var orig e originalEvent console log orig target map
  • 如何在 R 中为传单中的数值变量设置不对称颜色渐变

    我想让传单调色板以零为中心 红白绿发散 我已经尝试过中所说的这个帖子 https stackoverflow com questions 29262824 r center color palette on 0 当我尝试手动创建颜色时 我得
  • Python3.7 rasterio库打不开jp2

    我想从 Sentinel2 打开 jp2 图像 但是当我读取图像时 band rasterio open imagetest driver JP2OpenJPEG 我收到下一个错误 D DataStorage 00 sentinel dat
  • 将 Leaflet 图像映射到横向视口的边界视图

    我有一个 16384x16384 的方形图像 已使用 MapTiler 将其切成图块 以在 Leaflet 中创建 6 级缩放 我在Leaflet中设置的图像如下 var map L map map maxZoom 6 minZoom 0
  • [R][传单]:点击超链接

    我想在世界地图上添加标记 当用户单击一个标记时 它会将用户引导到另一个网站 而不是弹出窗口 我是这个库的新手 实际上这是我为了解决这个问题而尝试的第一个库 带有超链接标记的交互式地图 供用户单击并转到另一个网站 所以我能做的就是 map l

随机推荐

  • SqlServer查询死锁进程,结束死锁进程

    查询死锁 select request session id spid OBJECT NAME resource associated entity id tableName from sys dm tran locks where res
  • 网卡相关

    如何查看本机的网卡 操作步骤 1 win R 输入cmd 2 然后 输入命令 ipconfig all 然后按回车键 3 找到本地连接中的描述 如下
  • 5.38版本keil5MDK编译标准库工程问题解决

    1 首先 在keil官网下载安装keil5 ARM MDK 5 38版本 然后安装芯片资源包 Keil STM32F1xx DFP 2 4 0 关于芯片资源包的安装 由于选用的是STM32F1系列的芯片 可以安装资源包 Keil STM32
  • 面试官:烂大街的 Spring 循环依赖问题你都不会,我怎么敢录用你

    在关于Spring的面试中 我们经常会被问到一个问题 Spring是如何解决循环依赖的问题的 这个问题算是关于Spring的一个高频面试题 因为如果不刻意研读 相信即使读过源码 面试者也不一定能够一下子思考出个中奥秘 本文主要针对这个问题
  • 电脑外接显示屏导致屏幕翻转不回来解决办法

    电脑外接显示屏导致屏幕翻转不回来解决办法 一条命令解决 xrandr的通常用法 一条命令解决 xrandr o normal xrandr的通常用法 xrandr o left 向左旋转90度 xrandr o right 向右旋转90度
  • Linux安装、查看、卸载软件、更换yum源

    Linux安装 查看 卸载软件 更换yum源 1 知识点 1 Linux安装软件有那些方式 2 Linux各种安装方式如何安装 更新软件 3 如何查看软件包是否安装 如何卸载安装过的软件包 4 Linux如何更换国内yum仓库源 2 实现
  • redis集群部署

    目录 简介 开启多实例 1 复制一份 redis conf 2 修改一下conf文件 3 复制配置文件修改端口 4 启用多实例 简介 本地redis集群是基于两台服务器 每台服务器分别运行三个实例 一共六个实例搭建集群 两台服务器为10 1
  • 使用Canal订阅binlog发送到RabbitMQ的删除补偿

    Canal k n l 译意为水道 管道 沟渠 主要用途是基于 MySQL 数据库增量日志解析 提供增量数据订阅和消费 工作原理 Canal的工作原理相对简单 就是把自己伪装成MySQL slave 模拟MySQL slave的交互协议向M
  • 微信小程序下载图片到本地

    downloadImg function e 触发函数 console log e currentTarget dataset url wx downloadFile url e currentTarget dataset url 需要下载
  • 性能测试 —— 什么是全链路压测?

    随着互联网技术的发展和普及 越来越多的互联网公司开始重视性能压测 并将其纳入软件开发和测试的流程中 阿里巴巴在2014 年双11 大促活动保障背景下提出了全链路压测技术 能更好的保障系统可用性和稳定性 什么是全链路压测 全链路压测是一种全面
  • 4.7 期货每日早盘操作建议

    期货期权日评 静待反抽 PMI数据显示国内疫情基本控制后复工已较明显 经济数据将在二季度逐步改善 同时近期高层在贷款 汽车消费方面政策频出 有望支持实体经济复苏 当前A股已处于低位 期指继续做空的风险收益比在下降 因此建议可在股指期权上轻仓
  • Failed to execute ‘addColorStop‘ on ‘CanvasGradient‘: The value provided (‘undefined‘) could not be

    在echarts使用属性visualMap对折线图进行区间的变色设置 结果写完直接报错 Uncaught DOMException Failed to execute addColorStop on CanvasGradient The v
  • springboottest注解

    SpringBoot test 好习惯要坚持下去 CSDN博客 springboot test springboot使用 SpringBootTest注解进行单元测试 灰太狼 CSDN博客 springboot test
  • 如何为模型不同层设置不同的学习率?

    在模型调参中常用的一种方法是针对不同层设置不同的学习率 以此避免因难易程度不一致引起的过拟合等问题 一 模型举例 class Model nn Module def init self input size hidden size outp
  • 【cfengDB】自己实现数据库第0节 ---整体介绍及事务管理层实现

    LearnProj 内容管理 MySQL系统结构 一条SQL执行流程 cfengDB整体结构 事务管理TM模块 TID文件规则定义 文件读写 NIO RandomAccessFile FileChannel ByteBuffer 接口实现
  • 【单调栈】找到左右两边的最近小于元素

    基本概念 从一个问题引出单调栈的这个概念 给定一个数组 对于数组中的每一个元素 分别找到它左边和右边最近的小于它的元素 无重复数组 默认该数组中的元素是无重复的 我们可以维护一个栈 从栈的下方到上方 元素的大小从小到大 对于数组中的每一个元
  • OSI参考模型与TCP/IP参考模型(计算机网络)

    一 1 OSI参考模型有7层 从上到下为 应用层 表示层 会话层 传输层 网络层 数据链路层 物理层 如下图1 2 TCP IP参考模型有4层 自上到下分别为 应用层 传输层 网际层 网络接口层 如下图2 3 常考的5层参考模型是这样的 自
  • 微信小程序生成分享带参数二维码图片 并添加文字功能

    笔者最近接到一个新的任务 不是很难的功能 就是之前没有接触过 后端生成带参数的小程序二维码图片 并在图片下面添加一些文字 想在将代码分享给大家 期望可以给大家提供帮助 一 首先生成小程序的分享二维码有三种方式 接口 A 适用于需要的码数量较
  • 编程报错和问题解决办法【总结篇】

    目录 1 VMware开启虚拟机失败 模块 Disk 启动失败 2 vim 输入时光标键会变成a b c d 3 vim中delete backspace 键不能向左删除 4 conda command not found解决办法 5 进入
  • Leaflet的Vue组件 — Vue2Leaflet

    原文地址 Leaflet的Vue组件 Vue2Leaflet 这两天折腾Vue 在GitHub上发现了一个开源项目Vue2Leaflet Vue2Leaflet是一个Vue框架的JavaScript库 封装了Leaflet 它使构建地图变得