(Vue)使用openlayers添加wtms服务

8 篇文章 0 订阅
import "ol/ol.css";
  import {
    Map,
    View
  } from "ol";
import {
    Vector as VectorLayer,
    Tile
  } from 'ol/layer'
import {
    Vector as VectorSource,
    OSM,
    WMTS
  } from 'ol/source';
  import WMTSTileGrid from 'ol/tilegrid/WMTS'

  import {
    get as getProjection
  } from 'ol/proj'
  import {
    getWidth
  } from 'ol/extent'
 methods: {
      layerMap() {

        var projection = getProjection('EPSG:4326'); //投影坐标系信息
        var projectionExtent = projection.getExtent(); //投影坐标系范围
        var size = getWidth(projectionExtent) / 256; //分辨率
        var resolutions = new Array(15); //分辨率数组
        var matrixIds = new Array(15); //缩放等级数组
        for (var i = 1; i < 16; i++) {
          resolutions[i] = size / Math.pow(2, i);
          matrixIds[i] = 'EPSG:4326:' + (i - 1);
        }

        var layer = new Tile({
          source: new WMTS({
            url: 'http://127.0.0.1:8083/geoserver/gwc/service/wmts',
            // layer: 'cesiumDome:2010_DoubleGrowingSeason_1_ASI',  //图层名称
            layer: 'ASI_2010',  //图层组名称
            matrixSet: 'EPSG:4326', //投影坐标系设置矩阵
            format: 'image/png', //影像格式
            projection: projection, //投影坐标系
            //瓦片网格
            tileGrid: new WMTSTileGrid({
              origin: [-180.0, 90.0], //原点
              extent: projectionExtent, //范围,与视图对应,此处也可用[-180.0,-90.0,180.0,90.0]
              resolutions: resolutions, //分辨率数组
              matrixIds: matrixIds //缩放等级数组,需要与分辨率数组相匹配。
            }),
            wrapX: true //水平包裹
          }),
        });

        let tileOSM = new Tile({
          source: new OSM()
        });  //默认底图OSM

        let views = new View({
          center: [116.46, 39.92],
          projection: "EPSG:4326",
          zoom: 5,
        });
        let map = new Map({
          layers: [tileOSM],
          view: views,
          target: 'map',
        });  //初始化地图

        map.addLayer(layer);  //添加WMTS图层

      },
}

Vue3中,我们可以使用OpenLayers库来添加标注(marker)到地图上。下面是一个简单的步骤: 1. 首先,确保你已经安装了VueOpenLayers库。你可以通过npm命令来安装它们: ``` npm install vue npm install ol ``` 2. 在Vue组件中引入OpenLayers: ```javascript import * as ol from 'ol'; import 'ol/ol.css'; ``` 3. 在Vue组件中创建地图容器元素和地图对象: ```javascript mounted() { const map = new ol.Map({ target: 'map-container', // 地图容器元素的ID layers: [ new ol.layer.Tile({ source: new ol.source.OSM() // 使用OpenStreetMap作为底图 }) ], view: new ol.View({ center: ol.proj.fromLonLat([0, 0]), // 地图中心坐标 zoom: 2 // 缩放级别 }) }); } ``` 4. 在Vue组件的模板中添加地图容器元素: ```html <template> <div id="map-container"></div> </template> ``` 5. 在Vue组件中添加标注到地图上: ```javascript mounted() { // ...其他代码 const marker = new ol.Feature({ geometry: new ol.geom.Point(ol.proj.fromLonLat([longitude, latitude])) // 标注的经纬度坐标 }); marker.setStyle( new ol.style.Style({ image: new ol.style.Icon({ src: 'marker.png' // 标注的图标文件路径 }) }) ); const vectorSource = new ol.source.Vector({ features: [marker] }); const vectorLayer = new ol.layer.Vector({ source: vectorSource }); map.addLayer(vectorLayer); } ``` 通过上述步骤,我们可以在Vue3中使用OpenLayers库来添加标注到地图上。你可以根据实际情况调整代码和样式来满足你的需求。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值