A005:Openlayers加载天地图、百度、高德、ArcGIS、Bing、OSM、Google地图 (结合Vue 详细教程)


前言

要在 Vue.js 项目中使用 OpenLayers 加载多种地图服务(包括天地图、百度、高德、ArcGIS、Bing、OSM 和 Google 地图),你需要按照以下步骤进行操作:

1.安装必要的依赖:

安装 ol(OpenLayers)库。

2.创建 Vue 组件:

创建一个新的 Vue 组件,并在其中初始化 OpenLayers 地图实例。

3.添加地图服务:

根据每种地图服务的特性,设置相应的图层和源。

下面是一个详细的示例,它展示了如何在一个 Vue.js 组件中集成 OpenLayers 并加载各种地图服务。


提示:"如果对操作流程还不熟悉的话,可以参考之前的文章 A001 至 A004,这些内容会帮助你更好地了解 OpenLayers 的功能点。我们会持续更新相关内容,如果你感兴趣或有这方面的需求,欢迎关注并收藏。"

一、常见的地图数据源类型及其使用方法

1. XYZ (ol/source/XYZ)

XYZ 数据源是一种基于经纬度划分的 Web 地图瓦片服务。这是一种广泛使用的地图数据源类型,在许多免费或商业地图服务上都可以找到。例如:Stamen Maps,ArcGIS 地图服务。

2. OSM (ol/source/OSM)

OpenStreetMap(OSM)数据源是基于开源的全球地图数据。这种类型的底图广泛应用于个人项目、企业级应用等场合,因为它可以提供充足的地理信息数据和免费无限制的访问权限。

3. WMS (ol/source/TileWMS)

Web 地图服务(WMS)是 OGC(Open Geospatial Consortium)定义的基于网络的地图服务规范。WMS 数据源通常用于访问矢量数据、栅格数据等地图图层。例如:地理空间数据存储在 Geoserver 上时,可以通过 WMS 来访问。

二、如何在地图中使用以上三种数据源

1. XYZ 数据源(Stamen Maps 服务)

import TileLayer from "ol/layer/Tile";
import XYZ from "ol/source/XYZ";
 
// 创建 Stamen Maps 图层
const stamenLayer = new TileLayer({
   
   
  source: new XYZ({
   
   
    // 设置图层的 URL 模板
    url: "https://stamen-tiles-{a-d}.a.ssl.fastly.net/toner/{z}/{x}/{y}.png"
  })
});

2. OSM (ol/source/OSM)

import TileLayer from "ol/layer/Tile";
import OSM from "ol/source/OSM";
 
// 创建 OpenStreetMap 图层
const osmLayer = new TileLayer({
   
   
  source: new OSM()
});

3. WMS (ol/source/TileWMS)

import TileLayer from "ol/layer/Tile";
import TileWMS from "ol/source/TileWMS";
 
// 创建 WMS 图层(从 Geoserver 获取数据)
const wmsLayer = new TileLayer({
   
   
  source: new TileWMS({
   
   
    // 设置 Geoserver 服务的 URL
    url: "https://your-geoserver-url/wms",
    // 设置请求参数
    params: {
   
   
      // 指定要获取的图层名称
      LAYERS: "your-layer-name",
      // 设置为平铺模式获取
      TILED: true
    }
  })
});

创建好对应图层后,您可以将它们添加到 OpenLayers 地图实例中:

const map = new ol.Map({
   
   
  target: "map-container",
  layers: [stamenLayer, osmLayer, wmsLayer],
  view: view
});

三、加载天地图、百度、高德、ArcGIS、Bing、OSM、Google

1. 天地图(使用 WMTS 服务)

天地图有自己的服务,并且支持 WMTS。因此,为了使用这个优越的加载功能,我们通过创建一个包含 WMTS 结构的层来定义它。我们使用 ol/source/WMTS 启用 WMTS 加载,并定义各种地图参数以适应该服务的特点。例如,我们定义了瓦片网格,包括投影、瓦片的分辨率和矩阵 ID 等。

import TileLayer from "ol/layer/Tile";
import WMTS from "ol/source/WMTS";
import WMTSTileGrid from "ol/tilegrid/WMTS";
import {
   
    get as getProjection } from "ol/proj";
import {
   
    getWidth, getTopLeft } from "ol/extent";
 
const projection = getProjection("EPSG:900913");
const projectionExtent = projection.getExtent();
const size = getWidth(projectionExtent) / 256;
const resolutions = new Array(19);
const matrixIds = new Array(19);
for (let z = 0; z < 19; ++z) {
   
   
  resolutions[z] = size / Math.pow(2, z);
  matrixIds[z] = z;
}
const tileGrid = new WMTSTileGrid({
   
   
  origin
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值