Vue+OpenLayers地图控件controls【二】

本文介绍了OpenLayers库中常用的控件,包括全屏控件、鼠标位置控件、地图全局视图、比例尺控件、缩放控件、缩放滑块、地图旋转和缩放到全局等功能。通过示例代码详细展示了如何在地图应用中添加和配置这些控件。

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

1.fullscreen全屏控件

写法一:

import { FullScreen } from "ol/control";

this.map.addControl(new FullScreen());

写法二:

import { defaults as defaultControls, FullScreen } from "ol/control";

controls: defaultControls({
    zoom: false,
    rotate: false,
    attribution: false 
}).extend([
    new FullScreen()
])

2.mouseposition鼠标位置控件

import MousePosition from "ol/control/MousePosition";
import { createStringXY } from "ol/coordinate";

var mousePositionControl = new MousePosition({
    //坐标格式
    coordinateFormat: createStringXY(5),
    //地图投影坐标系(若未设置则输出为默认投影坐标系下的坐标)
    projection: "EPSG:4326",
    //坐标信息显示样式类名,默认是'ol-mouse-position'
    className: "custom-mouse-position",
    //显示鼠标位置信息的目标容器
    target: document.getElementById("mouse-position"),
    //未定义坐标的标记
    undefinedHTML: " ",
});
this.map.addControl(mousePositionControl);

 

import MousePosition from "ol/control/MousePosition";
import { format } from "ol/coordinate";

var mousePositionControl = new MousePosition({
    //坐标格式
    coordinateFormat: function (coordinate) {
        return format(coordinate, "经度:{x}   纬度:{y}", 2);
    },
    //地图投影坐标系(若未设置则输出为默认投影坐标系下的坐标)
    projection: "EPSG:4326",
    //坐标信息显示样式类名,默认是'ol-mouse-position'
    className: "custom-mouse-position",
    //显示鼠标位置信息的目标容器
    target: document.getElementById("mouse-position"),
    //未定义坐标的标记
    undefinedHTML: " ",
});
this.map.addControl(mousePositionControl);

3.overviewmap 地图全局视图(鹰眼图)控件 

import { defaults as defaultControls, OverviewMap } from "ol/control";

var overviewMapControl = new OverviewMap({
    layers: [
        new TileLayer({
            source: new OSM(),
        })
    ]
});

controls: defaultControls({ zoom: true }).extend([
    overviewMapControl
])

4.scaleline 比例尺控件 

import { ScaleLine } from "ol/control";

this.map.addControl(new ScaleLine());

5.zoom缩放控件

controls: defaultControls({
    zoom: true,
}).extend([]),

6.zoomslider缩放滑块刻度控件

import { ZoomSlider } from "ol/control";

this.map.addControl(new ZoomSlider());

7.Rotate地图旋转控件

(shift+alt+鼠标拖动地图)

import { Rotate } from "ol/control";

this.map.addControl(new Rotate());

8.ZoomToExtent缩放到全局控件

import { ZoomToExtent } from "ol/control";

this.map.addControl(new ZoomToExtent());

Vue中使用OpenLayers进行面积测量,可以通过以下步骤实现: 1. 首先,在Vue项目中,安装OpenLayers库。可以通过运行以下命令进行安装: ``` npm install ol ``` 2.Vue组件中引入OpenLayers库,可以使用`import`语句进行引入: ```javascript import ol from 'ol'; ``` 3. 创建一个Vue组件,并在`mounted`钩子函数中进行OpenLayers地图的初始化。在地图初始化过程中,可以设置视图的初始中心以及缩放级别: ```javascript mounted() { const map = new ol.Map({ target: 'map', view: new ol.View({ center: [0, 0], zoom: 2 }) }); } ``` 4. 在组件的模板中,添加一个具有特定ID的`div`元素,作为地图的容器: ```html <template> <div id="map"></div> </template> ``` 5. 在`mounted`钩子函数中,创建一个用于绘制图形的矢量源和矢量层。可以通过`ol.source.Vector`和`ol.layer.Vector`来实现: ```javascript mounted() { // ...省略地图初始化代码 const vectorSource = new ol.source.Vector(); const vectorLayer = new ol.layer.Vector({ source: vectorSource }); map.addLayer(vectorLayer); } ``` 6. 添加一个测量控件,用于测量面积。可以通过`ol.control.Measure`来实现: ```javascript mounted() { // ...省略地图初始化和添加矢量层代码 const measureControl = new ol.control.Measure({ source: vectorSource, type: 'area', interactionType: 'click' }); map.addControl(measureControl); } ``` 7. 最后,在模板中添加一个按钮或其他元素,用于触发测量功能: ```html <template> <div id="map"> <button @click="startMeasurement">开始测量</button> </div> </template> ``` 8. 在组件的方法中,编写`startMeasurement`方法,用于启动测量功能: ```javascript methods: { startMeasurement() { const measureControl = map.getControls().getArray().find(control => control instanceof ol.control.Measure); measureControl.setActive(true); } } ``` 通过以上步骤,Vue中的OpenLayers地图将具备面积测量功能。用户可以点击“开始测量”按钮,然后在地图上绘制多边形,测量结果将以弹窗或其他形式呈现给用户。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值