vue3中使用leaflet加载瓦片地图

在内网部署项目时,不能使用在线地图API,因此采用Leaflet.js库进行离线地图的展示。通过npm安装Leaflet及其contextmenu插件,全局引入并配置地图选项,包括右键菜单功能。地图瓦片使用自定义的服务器路径,需提前下载并在内网服务器上可用。
摘要由CSDN通过智能技术生成

在项目中有时会在内网进行部署,这样就不能使用在线地图api,所以就要使用离线地图来满足需求。在这里我们使用leftlet.js库。

首先使用npm进行安装 指令 npm install leaflet --save

找到项目的main.js文件引入并全局注册,也可以在需要使用的vue页面单独引入,由于我的项目在多个页面都有使用到,全局引入更方便些,小伙伴们可以根据需求自行选择。

import 'leaflet/dist/leaflet.css'
import L from 'leaflet'
app.config.globalProperties.L = L

我的项目中有右键菜单的需求,有需要的可以引入以下两个文件,在引入之前需要npm先安装,指令 npm install leaflet-contextmenu --save

import 'leaflet-contextmenu/dist/leaflet.contextmenu.css'
import 'leaflet-contextmenu/dist/leaflet.contextmenu'

 在需要使用的页面粘贴以下代码

<template>
    <div id="offLine"></div>
</template>

<script setup>
    import { onMounted, nextTick } from 'vue'
    let map = null
    const initMap = ()=>{
    map = L.map('offLine', {
        minZoom: 1,
        maxZoom: 18,
        contextmenu: true,//是否开启右键菜单
        contextmenuItems: [
          {
        text: '右键菜单',
        icon: icon1,
        callback: (event) => {
          menuClick(1)
            },
          },
        ],
      }).setView(centerPoint, level)
    
    L.tileLayer('http://wprd04.is.autonavi.com/appmaptile?lang=zh_cn&size=1&style=7&x={x}&y={y}&z={z}').addTo(map)
    }
    onMounted(() => {
      nextTick(() => {
        initMap()
      })
    })
<script>

这样就可以在页面上看到加载完成的瓦片地图了,注意这里的'http://wprd04.is.autonavi.com/appmaptile?lang=zh_cn&size=1&style=7&x={x}&y={y}&z={z}'是在线的瓦片地图源,在内网上使用需要下载瓦片地图放到服务器上 。

Uniapp是一个基于Vue.js的跨平台开发框架,可以用于开发iOS、Android、H5等多个平台的应用程序。而Leaflet是一个开源的JavaScript库,用于在Web上创建交互式地图。天地图国国家地理信息公共服务平台提供的地图服务。 要在Uniapp使用Leaflet加载地图热力图,可以按照以下步骤进行操作: 1. 在Uniapp项目安装Leaflet库。可以使用npm或者yarn命令进行安装,例如:`npm install leaflet`。 2. 在需要使用地图的页面引入Leaflet库。可以在页面的`<script>`标签使用`import L from 'leaflet'`语句引入。 3. 创建一个地图容器。可以在页面的`<template>`标签添加一个`<div>`元素作为地图容器,例如:`<div id="map"></div>`。 4. 初始化地图对象。在页面的`<script>`标签使用`L.map()`方法创建一个地图对象,并指定地图容器的id,例如:`const map = L.map('map')`。 5. 添加天地图瓦片图层。使用`L.tileLayer()`方法创建一个天地图瓦片图层对象,并将其添加到地图对象,例如: ``` const tileLayer = L.tileLayer('http://t{s}.tianditu.gov.cn/DataServer?T=vec_w&x={x}&y={y}&l={z}&tk=yourKey', { subdomains: ['0', '1', '2', '3', '4', '5', '6', '7'], attribution: '天地图' }); tileLayer.addTo(map); ``` 其,`yourKey`需要替换为你自己的天地图开发者密钥。 6. 加载热力图数据。使用`L.heatLayer()`方法创建一个热力图层对象,并将其添加到地图对象,例如: ``` const heatLayer = L.heatLayer(data, { radius: 20, blur: 15, maxZoom: 10 }); heatLayer.addTo(map); ``` 其,`data`是一个包含热力图数据的数组,每个数据点包含经纬度和权重信息。 至此,你就可以在Uniapp使用Leaflet加载地图热力图了。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值