环境vue3.0项目

最初是以npm i ol -s方式安装的ol,import方式导入引用,但是实际使用的时候一直报ol is not defined,最后选择在HTML以script标签引入ol,如下

  <link rel="stylesheet" href="<%= BASE_URL %>./css/gr-ol.css" type="text/css">
<script src="<%= BASE_URL %>./js/gr-ol.js" type="text/javascript"></script>

然后在src内的js文件就可以直接使用ol了,要实现框选放缩,要使用ol库里面的DragZoom控件,实例化一个DragZoom对象,添加到地图对象(这里是kpst)里面,原本从ol库引入的Map是带有DragZoom的,但是改变里面condition 的name从默认的‘shiftKeyOnly’到‘always’还没有找到方法,就重新实例化了一个DragZoom添加到现有地图

在map组件的js文件内添加控件

import { Map, View } from 'ol';
import DragZoom from 'ol/interaction/DragZoom'
kpst._this = new Map(_op)
// 为了改变DragZoom的内容,重新实例化一个控件
var dragZoom = new DragZoom({
condition: ol.events.condition.always,
out: true, // 此处为设置拉框完成时放大还是缩小 true缩小
});
// 默认控件不激活状态
dragZoom.setActive(false);
// 将控件添加到地图
kpst._this.addInteraction(dragZoom);

点击特定按钮激活控件

         // 获取拉框控件DragZoom进行引用
var dragzoom = me.map._this.interactions.getArray()[8]
// 获取地图容器dom
var map_container = document.querySelector("#map_container")
// 绑定放大缩小按钮事件
if (data.name == "拉框放大" || data.name == "拉框缩小") {
// 设置鼠标样式为十字瞄准线
map_container.style.cursor = "crosshair";
// 激活拉框控件DragZoom
dragzoom.setActive(true)
if (data.name == "拉框放大") {
// 设置拉框放大
dragzoom.out_ = false;
} else {
// 设置拉框缩小
dragzoom.out_ = true;
}
} else {
// 禁用DragZoom控件
dragzoom.setActive(false);
map_container.style.cursor = "default";
}

openlayers之框选放缩DragZoom(vue项目)的更多相关文章

  1. vue 项目 多选 问题

    近期 vue 项目用到多选功能,引用的elementUI的级联多选 Cascader,但是没有效果. 后来发现是elementUI版本问题,我们项目用的是2.7.2版本,版本太低. 后来 卸载了 重新 ...

  2. vue封装一个简单的div框选时间的组件

    记录一下我前段时间封装的一个vue组件吧.技术需要积累,有时间我把我之前写的还不错的组件都开源出来.并尝试vue和react 两种方式的组件封装.今天简单写下鼠标框选div选中效果的封装吧. div框 ...

  3. 在vue项目中添加全局提示框

    1.写一个提示框组件:msg.vue (注明:这里用两个div的原因是成功和失败的提示不能用同一个div,因为他们可能紧接着出现,所以不能从始至终只有一个提示框在工作) 2.写一个调用此组建的js : ...

  4. webpack+vue项目实战(四,前端与后端的数据交互和前端展示数据)

    地址:https://segmentfault.com/a/1190000010063757 1.前言 今天要做的,就是在上一篇文章的基础上,进行功能页面的开发.简单点说呢,就是与后端的数据交互和怎么 ...

  5. vue项目实现记住密码到cookie功能(附源码)

    实现功能: 1.记住密码勾选,点登陆时,将账号和密码保存到cookie,下次登陆自动显示到表单内 2.不勾选,点登陆时候则清空之前保存到cookie的值,下次登陆需要手动输入 大体思路就是通过存/取/ ...

  6. Geoserver+Openlayers拉框查询

    1.代码 <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" co ...

  7. 利用vue-cli3快速搭建vue项目详细过程

    一.介绍 Vue CLI 是一个基于 Vue.js 进行快速开发的完整系统.有三个组件: CLI:@vue/cli 全局安装的 npm 包,提供了终端里的vue命令(如:vue create .vue ...

  8. 使用HBuilderX实现打包vue项目成app

    一.准备开发工具 开发工具:HBuilderX 官网地址:http://www.dcloud.io (标准版需要自己安装插件,app开发版已经把app开发常用的插件安装好了,开箱即用,建议使用开发版) ...

  9. Vue项目经验

    Vue项目经验 setInterval路由跳转继续运行并没有及时进行销毁比如一些弹幕,走马灯文字,这类需要定时调用的,路由跳转之后,因为组件已经销毁了,但是setInterval还没有销毁,还在继续后 ...

随机推荐

  1. 20175215 2018-2019-2 第八周java课程学习总结

    第十五章 泛型与几何框架 15.1 泛型 泛型(Generics)是在JDK1.5中推出的,其主要目的是可以建立具有类型安全的集合框架,如链表.散列映射等数据结构. 15.1.1 泛型类声明 可以使用 ...

  2. C++类的默认成员函数

    成员函数隐含this指针参数: 每成员函数一个隐式的指针形参(构造函数除外): 对象在调用成员函数时,编译器会将对象的地址传递给this指针: 1.构造函数(需用一个公有成员函数对私有的成员变量进行初 ...

  3. Android采用pm命令静默卸载应用

    卸载app的方式有多种,可以直接调用android系统的卸载程序,但是这样会调出android卸载提示框,问题就是真的不好看. 所以采用静默卸载的方式,避免弹出系统提示框. 方法一(调用系统卸载程序) ...

  4. vmx转换ofv模板,导入esxi

    使用VMware Workstation安装目录下\OVFTool文件的ovftool.exe工具: 转换示例: 首先进入OVFTool根目录.然后执行 ovftool.exe "D:\ce ...

  5. IDEA常用智能提示

    psvm: 生成代码: public static void main(String[] args) { }

  6. CountDownLatch用法实践

    项目中写多线程时,需要判断所有线程是否执行完毕,所以想到了添加累加器来判断.这个累加器使用什么变量,找到了以下2种方式. 1. 类似AtomicInteger这种提供原子操作的类型AtomicInte ...

  7. Java String.Format() 方法及参数说明

    转自:https://blueram.iteye.com/blog/441683 JDK1.5中,String类新增了一个很有用的静态方法String.format():format(Locale l ...

  8. linux 系统下删除tar.gz的tar

    在终端输入: 1.删除环境配置 vi /etc/profile 删除对应的jdk配置. 2.删除jvm rm /usr/lib/jvm 3.删除对应的tar解压的java目录. 4.输入 java 或 ...

  9. 解密Go语言之 pprof

    相信很多人都听过“雷神 3”关于性能优化的故事.在一个 3D 游戏引擎的源码里,John Carmack 将 1/sqrt(x) 这个函数的执行效率优化到了极致. 一般我们使用二分法,或者牛顿迭代法计 ...

  10. Altera DDR2 IP核学习总结1-----------SRAM,DRAM

    SRAM,DRAM,SDRAM和DDR2这些芯片详解网上铺天盖地的各种资料都有,这里只是根据个人习惯做一下总结,方便记忆. 详细资料可以参考https://wenku.baidu.com/view/3 ...