openlayers [七] 地图控件controls详解

文章目录

    • [controls 简述](#controls 简述)
    • [常见的 controls 控件](#常见的 controls 控件)
    • 使用方法
      • [fullscreen 全屏](#fullscreen 全屏)
      • [mouseposition 鼠标位置控件](#mouseposition 鼠标位置控件)
      • [overviewmap 鹰眼图](#overviewmap 鹰眼图)
      • [scaleline 比例尺控件](#scaleline 比例尺控件)
      • [zoomslider 缩放滑块刻度控件](#zoomslider 缩放滑块刻度控件)
    • 总结

controls 简述

上篇文章我们将了在地图上的交互(interaction),那些都是一些隐性的需要去使用才能知道存在有这样一个东西,就像彩蛋一样。这篇我们主要讲地图上的控件(controls),这些可以说都是显性的东西,如果设置了,打开地图页面就能够看到的东西

属性 不是必须存在 的,默认使用的是 control~defaults 内容,并且是已 Array数组形式存在,也就是说可以像图层和交互一样,可以多个控件功能承载在地图上。

常见的 controls 控件

  • controldefaults,地图默认包含的控件,包含缩放控件和旋转控件;
  • fullscreen,全屏控件,用于全屏幕查看地图;
  • mouseposition,鼠标位置控件,显示鼠标所在地图位置的坐标,可以自定义投影;
  • overviewmap,地图全局视图控件(鹰眼图)
  • scaleline,比例尺控件;
  • zoom,缩放控件;
  • zoomslider,缩放滑块刻度控件;

使用方法

fullscreen 全屏

javascript 复制代码
import { defaults as defaultControls, FullScreen } from "ol/control";
 map.value.addControl(new FullScreen());

mouseposition 鼠标位置控件

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

map.value.addControl(mousePositionControl);

overviewmap 鹰眼图

参数:以下参数都为可选,添加如下代码

collapsed,收缩选项,默认为true,收缩;

collapseLabel,收缩后的图标按钮;

collapsible,是否可以收缩为图标按钮,默认为 true;

label,当 overviewmapcontrol 收缩为图标按钮时,显示在图标按钮上的文字或者符号,默认为 >>;

layers,overviewmapcontrol针对的图层,默认情况下为所有图层,一般这里设置的图层和map图层数据一致;

render,当 overviewmapcontrol 重新绘制时,调用的函数;

target,放置的 HTML 元素;

tipLabel,鼠标放置在图标按钮上的提示文字。

javascript 复制代码
import OverviewMap from "ol/control/OverviewMap";

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

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

scaleline 比例尺控件

javascript 复制代码
import { defaults as defaultControls,ScaleLine} from "ol/control";
map.value.addControl(new ScaleLine());

zoomslider 缩放滑块刻度控件

javascript 复制代码
import { defaults as defaultControls, ZoomSlider } from "ol/control";
map.value.addControl(new ZoomSlider());

总结

更多请见官网

相关推荐
牧羊狼的狼5 小时前
React 中的 HOC 和 Hooks
前端·javascript·react.js·hooks·高阶组件·hoc
知识分享小能手6 小时前
React学习教程,从入门到精通, React 属性(Props)语法知识点与案例详解(14)
前端·javascript·vue.js·学习·react.js·vue·react
luckys.one6 小时前
第9篇:Freqtrade量化交易之config.json 基础入门与初始化
javascript·数据库·python·mysql·算法·json·区块链
魔云连洲6 小时前
深入解析:Vue与React的异步批处理更新机制
前端·vue.js·react.js
mCell7 小时前
JavaScript 的多线程能力:Worker
前端·javascript·浏览器
weixin_437830948 小时前
使用冰狐智能辅助实现图形列表自动点击:OCR与HID技术详解
开发语言·javascript·ocr
超级无敌攻城狮8 小时前
3 分钟学会!波浪文字动画超详细教程,从 0 到 1 实现「思考中 / 加载中」高级效果
前端
excel9 小时前
用 TensorFlow.js Node 实现猫图像识别(教学版逐步分解)
前端
前端工作日常9 小时前
我学习到的Vue2.6的prop修饰符
vue.js
gnip9 小时前
JavaScript事件流
前端·javascript