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

本文介绍了如何在OpenLayers中使用不同的地图数据源,包括XYZ、OSM和WMS类型,以及如何加载天地图、百度、高德、ArcGIS、Bing、OSM和Google地图。文章详细阐述了每种数据源的使用方法和配置参数,为开发者提供了加载各种地图服务的示例代码。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

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

1.地图数据源类型及其使用方法

        1.XYZ (ol/source/XYZ)

        2.OSM (ol/source/OSM)

        3.WMS (ol/source/TileWMS)

2.如何在地图中使用数据源

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

        2.使用 OSM 数据源

        3.使用 WMS 数据源(以 Geoserver 服务为例)

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

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

        2.百度地图(使用 XYZ 服务)

        3.高德地图(使用 XYZ 服务)

        4.ArcGIS(使用 XYZ 服务)

        5.Bing Maps(使用专用的 BingMaps 服务)

        6.OpenStreetMap(OSM)

        7.Google Maps(使用 XYZ 服务)


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

1.地图数据源类型及其使用方法

本篇文章将介绍 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 来访问。

2.如何在地图中使用数据源

以下代码将演示如何在地图中使用前述介绍的三种不同类型的数据源:

        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 数据源

import TileLayer from "ol/layer/Tile";
import OSM from "ol/source/OSM";

// 创建 OpenStreetMap 图层
const osmLayer = new TileLayer({
  source: new OSM()
});

        3.使用 WMS 数据源(以 Geoserver 服务为例)

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
});

这样,您就可以在地图中看到绘制好的图层了。

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

       

要实现类似ArcGIS绘图工具条的自定义绘图控件,可以借助Vue.js和OpenLayers库来完成。 首先,在Vue.js中创建一个组件,用于包含OpenLayers地图。然后,使用OpenLayers的绘图工具来实现绘图功能。可以创建一个工具条组件,在该组件中包含各种绘图工具,比如点、线、面等。 下面是一个简单的实现示例: ``` html <template> <div class="map"> <div id="map" class="map-container"></div> <div class="toolbar"> <button @click="activateDraw('Point')">绘制点</button> <button @click="activateDraw('LineString')">绘制线</button> <button @click="activateDraw('Polygon')">绘制多边形</button> </div> </div> </template> <script> import 'ol/ol.css' import { Map, View } from 'ol' import { Tile as TileLayer, Vector as VectorLayer } from 'ol/layer' import { OSM, Vector as VectorSource } from 'ol/source' import { Draw, Modify, Snap } from 'ol/interaction' export default { name: 'MapComponent', data() { return { map: null, draw: null, modify: null, snap: null } }, mounted() { this.initMap() }, methods: { initMap() { this.map = new Map({ target: 'map', layers: [ new TileLayer({ source: new OSM() }), new VectorLayer({ source: new VectorSource() }) ], view: new View({ center: [0, 0], zoom: 2 }) }) this.initDraw() }, initDraw() { const source = this.map.getLayers().item(1).getSource() this.draw = new Draw({ source: source, type: 'Point' }) this.modify = new Modify({ source: source }) this.snap = new Snap({ source: source }) this.map.addInteraction(this.draw) this.map.addInteraction(this.modify) this.map.addInteraction(this.snap) this.draw.on('drawend', (event) => { const feature = event.feature feature.setId(new Date().getTime()) }) }, activateDraw(type) { this.draw.setActive(true) this.draw.setType(type) this.modify.setActive(true) this.snap.setActive(true) } } } </script> <style scoped> .map { position: relative; height: 400px; } .map-container { height: 100%; width: 100%; } .toolbar { position: absolute; top: 10px; left: 10px; z-index: 1; } </style> ``` 上面的代码中,首先初始化了一个OpenLayers地图,在地图上添加了OSM图层和一个空白的矢量图层,用于存储绘制的要素。然后,使用Draw、Modify和Snap三个交互对象来实现绘图功能。在initDraw方法中初始化这些交互对象,并在activateDraw方法中根据用户选择的绘图类型来设置Draw交互对象的type属性。 在模板中,使用三个按钮来触发activateDraw方法,分别对应绘制点、线和多边形。同时,使用CSS样式将绘图工具条定位到地图左上角。 这样就完成了一个简单的自定义绘图控件,类似于ArcGIS的绘图工具条。可以根据自己的需要进行二次开发,添加更多的绘图工具和样式。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

三维giser

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值