vue3对openlayers使用(加高德,天地图图层)

OpenLayers认识

WebGIS四大框架:== Leaflet、OpenLayers、Mapbox、Cesium ==

OpenLayers 是一个强大的开源 JavaScript 地图库,专注于提供可嵌入网页的交互式地图体验。作为一款地理信息系统(GIS)的前端开发工具,OpenLayers 提供了灵活的 API,允许开发者构建各种地图应用,从简单的地图显示到复杂的地理信息分析。

1.下载ol 插件

npm i ol

2.初始化

 const map = new Map({  
        target: mapElement.value,  
        layers: tiandilayers,  
        view: view
      });  
  • 1.参数target
    制定初始化的地图设置到html页面上的哪一个DOM元素上。

  • 2.参数layers
    一个map可以设置多个layer,图层是构成openlayers的基本单位,地图是由多个layer组成的。

  • 3.参数view
    视图是设置地图的显示范围,包括中心点,放大级别,坐标。

EPSG:4326 是一个GIS(地理信息系统) 中使用的坐标参考系代码,它表示一个地理坐标系,即使用经纬度表示地理位置。
EPSG:4326 常被用于在网络上传输地理位置信息,如在Web地图服务和地理位置Api等。
EPSG:4326 的经纬度范围:经度范围在-180°到180°之间,维度范围在-90°到90°之间。

区别:
EPSG:4326 表示一个地理坐标系,使用经纬度来表示地理位置,通常用于地理位置的显示和制图。
EPSG:3857表示一个Web墨卡托坐标系,使用平面墨卡托投影来表示地理位置。

3.结合高德地图

 <template>  
    <div id="map" ref="mapElement"></div>  
 </template> 
 <script setup>  
 import Map from 'ol/Map';  
 import View from 'ol/View';  
 import TileLayer from 'ol/layer/Tile';  
 import XYZ from 'ol/source/XYZ';  
 import VectorLayer from 'ol/layer/Vector';  
 import VectorSource from 'ol/source/Vector';  
 import Feature from 'ol/Feature';  
 import Point from 'ol/geom/Point';
 import { fromLonLat } from 'ol/proj'; 
 import { onMounted, ref } from 'vue';

 const mapElement=ref(null)
 const initMap=()=>{    
      // 创建高德地图的 XYZ 瓦片源  
      const amapSource = new XYZ({  
        url: 'http://webst0{1-4}.is.autonavi.com/appmaptile?style=7&x={x}&y={y}&z={z}&lang=zh_cn&scale=1&size=1',  
        // 高德地图的瓦片服务可能有不同的 URL 格式和参数,这里是一个示例  
      });  
      // 创建 OpenLayers 图层,使用上面创建的瓦片源  
      const amapLayer = new TileLayer({  
        source: amapSource,  
      });  
      // 创建 OpenLayers 地图实例  
      const map = new Map({  
        target: mapElement.value,  
        layers: [amapLayer],  
        view: new View({  
          center: fromLonLat([116.397428, 39.90923]), // 设置地图中心点坐标(例如:北京)  
          zoom: 8, // 设置初始缩放级别  
          // projection:"EPSG:4326"
        }), 
      });  
    }
  onMounted(()=>{
    initMap()
  })
 
</script>
<style scoped>  

4.结合天地图

//主要改变图层layers
 //图层数组 layers,天地图
   let tiandilayers= [
        new TileLayer({
          source: new XYZ({
            crossOrigin: 'anonymous',
            url: 'https://t0.tianditu.gov.cn/DataServer?T=vec_w&x={x}&y={y}&l={z}&tk=你的key'
          })
        }),
        new TileLayer({
          source: new XYZ({
            crossOrigin: 'anonymous',
            url: 'https://t0.tianditu.gov.cn/DataServer?T=cva_w&x={x}&y={y}&l={z}&tk=你的key'
          })
        })
      ]
 	const map = new Map({  
        target: mapElement.value,  
        layers: tiandilayers,  
        view: new View({  
          center: fromLonLat([116.397428, 39.90923]), // 设置地图中心点坐标(例如:北京)  
          zoom: 8, // 设置初始缩放级别  
          // projection:"EPSG:4326"
        }), 
      });  
      //添加点图层
      const source = new VectorSource({  
        features: [new Feature(new Point(fromLonLat([116.485467, 39.907761])))], // 假设的点坐标(需转换为 OpenLayers 使用的坐标系统)  
      });  
      const vectorLayer = new VectorLayer({  
        source: source,  
      });  
      map.addLayer(vectorLayer); 

在这里插入图片描述

  • 9
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
使用Vue3接入OpenLayers时,可以按照以下步骤进行操作: 1. 在Vue项目中安装OpenLayers库。可以通过npm或yarn命令来安装OpenLayers,例如: ``` npm install ol ``` 或 ``` yarn add ol ``` 2. 在需要使用OpenLayersVue组件中,引入OpenLayers的相关模块和样式。可以使用import语句来引入需要的模块,例如: ``` import 'ol/ol.css'; import { Map, View, Feature, Polygon } from 'ol'; import { Vector as VectorLayer } from 'ol/layer'; import { Vector as VectorSource } from 'ol/source'; import { Style, Stroke } from 'ol/style'; ``` 3. 在Vue组件的`data`中定义地图容器和其他需要的变量,例如: ``` data() { return { map: null, vectorSource: null, vectorLayer: null }; } ``` 4. 在Vue组件的`mounted`钩子函数中,初始化地图。可以创建地图容器,并设置初始视图和图层,例如: ``` mounted() { this.map = new Map({ target: 'map-container', // 'map-container'是你在模板中定义的地图容器的id view: new View({ center: [0, 0], zoom: 10 }), layers: [ this.vectorLayer // 添自定义的矢量图层 ] }); } ``` 5. 在需要绘制扇形或环形的地方,使用OpenLayers的相关功能进行绘制。可以使用OpenLayers的绘制工具和几何图形对象来实现,例如: ``` // 绘制环形 const circle = new Feature(new Polygon([...])); this.vectorSource.addFeature(circle); // 绘制扇形 const sector = new Feature(new Polygon([...])); this.vectorSource.addFeature(sector); ``` 这里需要根据你的具体需求,创建相应的几何图形对象,并将其添到矢量图层的数据源中。 6. 最后,不要忘记在组件销毁时清理地图相关资源,例如在Vue组件的`beforeDestroy`钩子函数中: ``` beforeDestroy() { this.map.setTarget(null); this.map = null; this.vectorSource = null; this.vectorLayer = null; } ``` 通过以上步骤,你就可以在Vue3中成功使用OpenLayers进行地图操作,包括载数据、绘制扇形和环形等功能。请根据你的具体需求进行相应的修改和调整。<span class="em">1</span><span class="em">2</span><span class="em">3</span><span class="em">4</span>

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值