首页 > 其他分享 >vue3 +leaflet + 天地图

vue3 +leaflet + 天地图

时间:2023-05-20 14:57:16浏览次数:35  
标签:getUrl img 地图 leaflet let vec vue3 type

vue3使用leaflet

npm install leaflet -D
如果使用了ts
npm i --save-dev @types/leaflet  // 使用了ts需要下载声明类型
// 更具需要获取不通过类型的url
function getUrl(type:string) {
  interface MyObject {
    [key: string]: Array<string>; 
  }
  let obj:MyObject = {
    'vec_c':['vec_c','vec'],
    'cva_c':['cva_c','cva'],
    'img_c':['img_c','img'],
  }
  const key = '7dc37****************0052dfe0'
  const num = Math.floor(Math.random() * 8); 
  return `http://t${num}.tianditu.com/${obj[type][0]}/wmts?layer=${obj[type][1]}&style=default&tilematrixset=c&Service=WMTS&Request=GetTile&Version=1.0.0&Format=tiles&TileMatrix={z}&TileCol={x}&TileRow={y}&tk=${key}`
}
import L from 'leaflet'
import 'leaflet/dist/leaflet.css'
export function loadBaseMap( id: string, center: [number, number] = [29.18404688, 119.70671163],satellite:boolean = true) {
  let map = null
  //影像地图
  let type = satellite ? 'img_c' : 'vec_c'
  let osm = L.tileLayer(getUrl(type), {
    maxZoom: 20,
    tileSize: 256,
    zoomOffset: 1,
  }),cities = L.tileLayer(getUrl('cva_c'), {
    maxZoom: 20,
    tileSize: 256,
    zoomOffset: 1,
  }),ibo_c = L.tileLayer(getUrl('ibo_c'), {
    maxZoom: 20,
    tileSize: 256,
    zoomOffset: 1,
  })
  map = L.map(id, {
    zoomControl: false, //不显示缩放小控件
    minZoom: 3,
    maxZoom: 17,
    center: center,
    zoom: 14,
    layers: [ osm,cities,ibo_c],// 初始化底图
    attributionControl: false,
    crs: L.CRS.EPSG4326,
  })
  map.on('click', (e) => {
    console.log(e.latlng, 'e')
  })
}

image

标签:getUrl,img,地图,leaflet,let,vec,vue3,type
From: https://www.cnblogs.com/newBugs/p/17417226.html

相关文章

  • vue3+vant3封装省市区组件
    因为后台返回的数据格式和vant不一致,所以自己遍历循环得到自己想到的格式。省市区的接口并不是一个以children格式,一次性全部获取,而是选择市的时候需要得到省的id,一层一层请求接口才能得到省市区。 父组件:1<selectArea2@addressOnFinish="onChangeArea"3......
  • 002-Leaflet-图层切换
    一、代码<!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><metahttp-equiv="X-UA-Compatible"content="IE=edge"><metaname="viewport"content="......
  • Typora上传博客园教程:解决本地图片问题
    一、个人使用感受:推荐使用我之前还担忧,该软件上传的图片会占用我们博客的上传文件的100m空间,或者占用我们的相册,但是经过一番测试与分析后,我才发现,它上传的地方和我们在博客园在线写文章时插入图片一样,都不会占用我们个人的空间,所以不存在空间会越用越小的问题,尽情用就完事了。......
  • Android 百度地图GPS获取定位经纬度
    首先进入百度地图官网,点击开发文档-->Android定位SDK-->获取密匙,进入应用创建界面,创建新的应用。准备好后,在“产品下载”栏目下载Android定位的包,将其打包放入项目中的libs文件目录。之后就需要在AndroidManifest.xml中添加APK,在Application标签中添加:<meta-dataand......
  • 001-Leaflet-地图初始化
    一、代码1<!DOCTYPEhtml>2<htmllang="en">34<head>5<metacharset="UTF-8">6<metahttp-equiv="X-UA-Compatible"content="IE=edge">7<metaname="viewport......
  • Vue3迎来升级,全面助力企业数字化转型
    近年来,随着“互联网+”的推进与应用普及,数字化转型已经成为企业发展的必备选项。低代码开发平台的迅速普及和广泛应用,也为企业数字化的转型提供了支撑技术。JNPF快速开发平台深度集成java+.net 6 双技术引擎,具备易维护、便部署、高集成、高效率等多方面特性,面向企业项目提供开......
  • leaflet插件leaflet-graticule经度标签格式化问题
    https://github.com/turban/Leaflet.Graticuleimport"leaflet-graticule";L.graticule().addTo(map);解决办法:import"leaflet-graticule";L.LatLngGraticule.prototype.__format_lng_origin=L.LatLngGraticule.prototype.__format_lng;L.LatLngGra......
  • Vue3中watch监听写法
    侦听ref和reactiveconststate=reactive({ count:0})//侦听reactive中属性,需要包裹在箭头函数中watch(()=>state.count,(newVal,oldVal)=>{ })//watch直接接受ref作为监听对象,并且在回调函数返回解包后的值constcount=ref(0);watch(count,(newVal,o......
  • 使用raphael.js绘制中国地图
    最近的数据统计项目中要用到中国地图,也就是在地图上动态的显示某个时间段某个省份地区的统计数据,我们不需要flash,仅仅依靠raphael.js以及SVG图像就可以完成地图的交互操作。在本文中,我给大家分享如何使用js来完成地图交互。先简单介绍下raphael.js,raphael.js是一个很小的javasc......
  • 记录--vue3优雅的使用element-plus的dialog
    这里给大家分享我在网上总结出来的一些知识,希望对大家有所帮助如何优雅的基于element-plus,封装一个梦中情dialog优点摆脱繁琐的visible的命名,以及反复的重复dom。想法将dialog封装成一个函数就能唤起的组件。如下:addDialog({title:"测试",//弹窗名compone......