Vue使用openlayers加载天地图
申请天地图key
官方:https://www.tianditu.gov.cn/
申请key:https://sso.tianditu.gov.cn/login?service=https%3A%2F%2Fconsole.tianditu.gov.cn%2F
进去之后,先登录,如果没账号先注册一个就行。
可以创建个应用,创建完成后,会自动生成key。
安装ol加载天地图
先安装下
npm i ol
然后是完整代码:
<template> <div id="map-container"></div> </template> <script> import { Map, View } from 'ol' import { Tile as TileLayer } from 'ol/layer' import { get } from 'ol/proj'; import { getWidth, getTopLeft } from 'ol/extent' import { WMTS } from 'ol/source' import WMTSTileGrid from 'ol/tilegrid/WMTS' export const projection = get("EPSG:4326"); const projectionExtent = projection.getExtent(); const size = getWidth(projectionExtent) / 256; const resolutions = []; for (let z = 2; z < 19; ++z) { resolutions[z] = size / Math.pow(2, z); } let map; export default { data() { return { } }, mounted(){ this.initMap('SL') // 加载矢量底图 // this.initMap('YX') // 加载影像底图 // this.initMap('DX') // 加载地形晕渲 }, methods:{ initMap(layerType = 'SL') { const TIANDI_KEY = '31499a6260cb9f29558750d04a934256' // 对应的值是固定的 const layerTypeMap = { 'SL': ['vec', 'cva'], // [矢量底图, 矢量注记] 'YX': ['img', 'cia'], // [影像底图, 影像注记] 'DX': ['ter', 'cta'] // [地形晕渲, 地形注记] } // c: 经纬度投影 w: 球面墨卡托投影 const matrixSet = 'c' map = new Map({ target: 'map-container', layers: [ // 底图 new TileLayer({ source: new WMTS({ url: `http://t{0-6}.tianditu.com/${layerTypeMap[layerType][0]}_${matrixSet}/wmts?tk=${TIANDI_KEY}`, layer: layerTypeMap[layerType][0], matrixSet: matrixSet, style: "default", crossOrigin: 'anonymous', // 解决跨域问题 如无该需求可不添加 format: "tiles", wrapX: true, tileGrid: new WMTSTileGrid({ origin: getTopLeft(projectionExtent), //resolutions: res.slice(0, 15), resolutions: resolutions, matrixIds: ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12', '13', '14'] }) }) }), // 标注 new TileLayer({ source: new WMTS({ url: `http://t{0-6}.tianditu.com/${layerTypeMap[layerType][1]}_${matrixSet}/wmts?tk=${TIANDI_KEY}`, layer: layerTypeMap[layerType][1], matrixSet: matrixSet, style: "default", crossOrigin: 'anonymous', // 解决跨域问题 如无该需求可不添加 format: "tiles", wrapX: true, tileGrid: new WMTSTileGrid({ origin: getTopLeft(projectionExtent), resolutions: resolutions, matrixIds: ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12', '13', '14'] }) }) }) ], view: new View({ center: [169.40, 65.35], projection: projection, zoom: 3, maxZoom: 17, minZoom: 1 }) }) } } } </script> <style scoped> #map-container { width: 100%; height: 100%; } </style>
上面把天地图密钥替换成你第一步申请的key就可以。
上面示例加载了三种天地图:矢量底图、影像底图、地形晕渲
效果图
下面是效果图:
矢量底图
影像底图
地形晕渲
到此这篇关于Vue使用openlayers加载天地图的文章就介绍到这了,更多相关Vue openlayers加载天地图内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
相关文章
Vue中使用v-model双向数据绑定select、checked等多种表单元素的方法
v-model 指令可以用在表单 input、textarea 及 select 元素上创建双向数据绑定,它会根据控件类型自动选取正确的方法来更新元素,本文给大家介绍Vue中如何使用v-model双向数据绑定select、checked等多种表单元素,感兴趣的朋友一起看看吧2023-10-10Vue项目Element表格对应字段映射显示方法:formatter格式化数据问题
这篇文章主要介绍了Vue项目Element表格对应字段映射显示方法:formatter格式化数据问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教2024-07-07
最新评论