OpenLayers学习笔记中级篇(五、地图事件)

OpenLayers 3 之 事件体系详解 地图上的各种事件触发到底是怎么回事?熟悉前端的肯定知道 javascript 的事件机制,openlayers 既然是 javascript 实现的,那么它就也不例外,也遵循 W3C 的标准,只不过是 openlayers 进行的简化实现。文章首先讲解 openlayers 的事件结构实现,然后结合“切片WMS数据源”(ol.source.TileWMS)对象的事件机制进行实例分析。一. 介绍事件机 阅读详情

事件让很多业务的东西串联在一起,在前端中起着非常重要的作用,比如鼠标点击,移动事件。但其应用远不仅如此,现实生活中就存在很多大大小小的事件。 在OpenLayers 3中,同样存在非常多的事件,比如鼠标左键单击,双击等等。 同时还有一些用于各个模块之间进行协作使用的事件,比如ol.Map的postrender和propertychange事件。 通过这些事件,OpenLayers 3的功能模块协作一致,同样地,也可以让我们自己二次开发的功能模块运作起来。 同时,根据需要,我们还可以在系统中新增自定义事件,使得我们的开发使用方式同OpenLayers 3更加的一致。在本章节将详细介绍OpenLayers 3中的各种事件,及相关应用。

首先我们先来一个简单的demo:

1、用鼠标点击下面这个地图,将弹出一个对话框,显示点击位置的经纬度:

<!doctype html>
<html xmlns=http://www.w3.org/1999/xhtml>
<head>                  
    <meta http-equiv=Content-Type content="text/html;charset=utf-8">
    <meta http-equiv=X-UA-Compatible content="IE=edge,chrome=1">
    <meta content=always name=referrer>
    <title>点击显示经纬度</title>
    <link href="css/ol.css" rel="stylesheet" type="text/css" />
    <script type="text/javascript" src="js/ol.js" charset="utf-8"></script>
</head>

<body>
    <div id="map" style="width: 100%"></div>
<script type="text/javascript">
    var map = new ol.Map({
        layers: [
          new ol.layer.Tile({
            source: new ol.source.OSM()
          })
        ],
        target: 'map',
        view: new ol.View({
          //这儿要注意坐标系的转换
          center: ol.proj.transform(
              [116.403598,39.917553], 'EPSG:4326', 'EPSG:3857'),
          zoom: 10
        })
    });


     // 监听singleclick事件
    map.on('singleclick', function(e){
    	
		
        // 通过getEventCoordinate方法获取地理位置,再转换为wgs84坐标,并弹出对话框显示
        alert(ol.proj.transform(map.getEventCoordinate(e.originalEvent), 'EPSG:3857', 'EPSG:4326'));
	
     
    })

</script>
</body>

</html>

运行一下看一下效果:

我们在点击地图的时候会弹出我们当前点击位置的经纬度!代码很简单,但需要注意的是,任意的事件应用,必然会有三个步骤:

  • 找准事件发送者,比如上面这个例子,map就是事件发送者。 如何找到它呢? 一般都是要交互的对象。
  • 找准事件名称,比如上面例子中的singleclick,切忌不要随便想象,或者按照惯例来写名称,初次使用,请一定参照API文档,不然后果自负。
  • 编写事件响应函数,在OpenLayers中,事件发送者都会有一个名字为on的函数,调用这个函数,就能监听指定的事件,响应函数listener具有一个参数event,这个event类就对应于API文档中事件名称后边括号里的类。

这三个步骤缺一不可,如果使用过jquery监听事件,应该对此比较熟悉。 除此之外,关于OpenLayers 3中的事件应用,还有下面两点需要说明: 

  • 几乎OpenLayers 3中所有的类,都能监听事件和触发事件,因为它们都继承于类ol.Observable,这个类甚至是ol.Object的父类。 如此可见,OpenLayers在整个引擎中,是多么的依赖于事件通信。
  • 而OpenLayers 3的整个事件机制,又是基于Google的Closure Library。所以如果你对这个库熟悉,那么对OpenLayers 3提供的事件机制会比较熟悉。

 2、注销事件,上一节我们做了一个点击地图弹出经纬度的功能, 但如果之后又不需要再响应该事件了,要怎么办。 比如有一个引导用户使用的需求,用户第一次点击地图的时候,需要弹出一个使用说明,之后点击地图就不用再弹出这个使用说明了。 那我们有哪些方式可以做到这一点呢?那么在我们不需要这个功能的时候如何注销它呢?现在我们来做这个demo:

<!doctype html>
<html xmlns=http://www.w3.org/1999/xhtml>
<head>                  
    <meta http-equiv=Content-Type content="text/html;charset=utf-8">
    <meta http-equiv=X-UA-Compatible content="IE=edge,chrome=1">
    <meta content=always name=referrer>
    <title>注销地图点击事件</title>
    <link href="css/ol.css" rel="stylesheet" type="text/css" />
    <script type="text/javascript" src="js/ol.js" charset="utf-8"></script>
</head>

<body>
    <div id="map" style="width: 100%"></div>
<script type="text/javascript">
    var map = new ol.Map({
        layers: [
          new ol.layer.Tile({
            source: new ol.source.OSM()
          })
        ],
        target: 'map',
        view: new ol.View({
          center: ol.proj.transform(
              [116.403598,39.917553], 'EPSG:4326', 'EPSG:3857'),
          zoom: 10
        })
    });

    // 创建事件监听器
    var singleclickListener = function(event){
        alert('大家好,这是一个演示如何取消事件监听的应用,之后再点击地图时,你将不会再看到这个说明。');
        // 在响应一次后,注销掉该监听器
        map.un('singleclick', singleclickListener);
    };
    map.on('singleclick', singleclickListener);
</script>
</body>

</html>

大家可以自己运行一下看一下效果!大家可以看到在点击完弹窗后再点击地图时就没有监听事件了!

3、我们现在再来写一下常用的监听事件:

我们常用的监听事件包括如下几个方面:

地图鼠标左键单击事件

对应的类为ol.Map,事件名为singleclick。

地图鼠标左键双击事件

对应的类为ol.Map,事件名为dblclick。

地图鼠标点击事件

对应的类为ol.Map,事件名为click。

地图鼠标移动事件

对应的类为ol.Map,事件名为pointermove。

地图鼠标拖拽事件

对应的类为ol.Map,事件名为pointerdrag。

地图移动事件

对应的类为ol.Map,事件名为moveend。

好了,话不多说,直接上代码:

<!doctype html>
<html xmlns=http://www.w3.org/1999/xhtml>
<head>                  
    <meta http-equiv=Content-Type content="text/html;charset=utf-8">
    <meta http-equiv=X-UA-Compatible content="IE=edge,chrome=1">
    <meta content=always name=referrer>
    <title>各种地图事件的监听</title>
    <link href="css/ol.css" rel="stylesheet" type="text/css" />
    <script type="text/javascript" src="js/ol.js" charset="utf-8"></script>
</head>

<body>
    <div id="info" style="background-color: #999;">触发事件提示信息</div>
<div id="map" style="width: 100%"></div>
<script type="text/javascript">
    var map = new ol.Map({
        layers: [
          new ol.layer.Tile({
            source: new ol.source.OSM()
          })
        ],
        target: 'map',
        view: new ol.View({
          center: ol.proj.transform(
              [104, 30], 'EPSG:4326', 'EPSG:3857'),
          zoom: 10
        })
    });

    // 响应单击事件
    map.on('singleclick', function(event){
        document.getElementById('info').innerHTML = '触发了ol.Map的单击事件:singleclick';
    });

    // 响应双击事件
    map.on('dblclick', function(event){
        document.getElementById('info').innerHTML = '触发了ol.Map的双击事件:dblclick';
    });

    // 响应点击事件
    map.on('click', function(event){
        document.getElementById('info').innerHTML = '触发了ol.Map的点击事件:click';
    });

    // 响应鼠标移动事件,事件太频繁,故注释掉了,可自行验证该事件
    // map.on('pointermove', function(event){
    //     document.getElementById('info').innerHTML = '触发了ol.Map的鼠标移动事件:pointermove';
    // });

    // 响应拖拽事件
    map.on('pointerdrag', function(event){
        document.getElementById('info').innerHTML = '触发了ol.Map的拖拽事件:pointerdrag';
    });

    // 地图移动事件
    map.on('moveend', function(event){
        document.getElementById('info').innerHTML = '触发了ol.Map的地图移动事件:moveend';
    });

</script>
</body>

</html>

然后看一下效果:

我们在对地图做各种动作时,都可以被监听到然后输出出来! 

4、最后我们再自定义一个地图事件并且应用,我们接下来就尝试为ol.Feature添加一个mouseover的事件,通过这个事件,就可以实现在鼠标移到Feature上时,改变它的样式。直接上代码:

<!doctype html>
<html xmlns=http://www.w3.org/1999/xhtml>
<head>                  
    <meta http-equiv=Content-Type content="text/html;charset=utf-8">
    <meta http-equiv=X-UA-Compatible content="IE=edge,chrome=1">
    <meta content=always name=referrer>
    <title>点击显示经纬度</title>
    <link href="css/ol.css" rel="stylesheet" type="text/css" />
    <script type="text/javascript" src="js/ol.js" charset="utf-8"></script>
</head>

<body>
    <div id="map" style="width: 100%, height: 400px"></div>
    <script>

        // 在原点处创建一个feature
        var feature1 = new ol.Feature({
            geometry: new ol.geom.Point([0, 0])
        });

        // 并设置为半径为100像素的圆,用红色填充
        feature1.setStyle(new ol.style.Style({
            image: new ol.style.Circle({
                radius: 100,
                fill: new ol.style.Fill({
                    color: 'red'
                })
            })
        }));

        // 在坐标[5000000, 5000000]处创建另一个feature
        var feature2 = new ol.Feature({
            geometry: new ol.geom.Point([5000000, 5000000])
        });

        // 并设置为半径为100像素的圆,用黄色填充
        feature2.setStyle(new ol.style.Style({
            image: new ol.style.Circle({
                radius: 100,
                fill: new ol.style.Fill({
                    color: 'yellow'
                })
            })
        }));

      // 创建地图
      var map = new ol.Map({
            // 设置地图图层
            layers: [
              // 创建一个使用Open Street Map地图源的瓦片图层
              new ol.layer.Tile({source: new ol.source.OSM()}),
              // 把之前创建的feature1和feature2放在另一个层里,Vector可以用来放置features
              new ol.layer.Vector({source: new ol.source.Vector({
                  features: [feature1, feature2]
              })})
            ],
            // 设置显示地图的视图
            view: new ol.View({
              center: [0, 0],    // 定义地图显示中心于经度0度,纬度0度处
              zoom: 2            // 并且定义地图显示层级为2
            }),
            // 让id为map的div作为地图的容器
            target: 'map'    
        });

      // 为地图注册鼠标移动事件的监听
      map.on('pointermove', function(event){
          map.forEachFeatureAtPixel(event.pixel, function(feature){
              // 为移动到的feature发送自定义的mousemove消息
              feature.dispatchEvent({type: 'mousemove', event: event});
          });
      });

      // 为feature1注册自定义事件mousemove的监听
      feature1.on('mousemove', function(event){
          // 修改feature的样式为半径100像素的园,用黑色填充
          this.setStyle(new ol.style.Style({
                image: new ol.style.Circle({
                    radius: 100,
                    fill: new ol.style.Fill({
                        color: 'black'
                    })
                })
            }));
      });
      // 为feature1注册自定义事件mousemove的监听
      feature2.on('mousemove', function(event){
          // 修改feature的样式为半径100像素的园,用黑色填充
          this.setStyle(new ol.style.Style({
                image: new ol.style.Circle({
                    radius: 100,
                    fill: new ol.style.Fill({
                        color: 'green'
                    })
                })
            }));
      });
    </script>
</body>

</html>

看一下效果:

鼠标移动前:

鼠标移动后:

我们实现了这个功能!关键代码在于这:

 // 为地图注册鼠标移动事件的监听
      map.on('pointermove', function(event){
          map.forEachFeatureAtPixel(event.pixel, function(feature){
              // 为移动到的feature发送自定义的mousemove消息
              feature.dispatchEvent({type: 'mousemove', event: event});
          });
      });

dispatchEvent的参数具有type和event属性,必须这样构造吗?在回答这个问题之前,需要先看一下API文档,发现参数类型为goog.events.EventLike,说明它其实用的是google的closure库来实现的,通过closure库的源码我们知道,派发的事件如果是一个对象,那么必须包含type属性,用于表示事件类型。其他的属性可以自由定义,比如此处定义了event属性,并设置对应的值,为的是让鼠标事件传递给feature1的监听函数。

dispatchEvent的参数会被原封不动的传递给事件响应函数,对应代码

feature1.on('mousemove', function(event){

里function的参数event,可以通过调试窗口看到此处的event和dispatchEvent的参数是一样的。注意事件名称是可以自定义的,只要派发和监听使用的事件名称是一致的就可以。

我们就完成了自定义事件的三件事:定义事件类型,派发事件,监听事件。

使用自定义事件会带来下面几个好处:

 上面这个例子鼠标移到红色圆后变绿色,但是移出圆后,还是绿色,能不能再移出圆的时候再变成红色呢? 试试用自定义事件的方式再改进一下,实现mousein和mouseout两种事件。这个大家可以自己查阅API然后尝试做一下!

  • 灵活控制,对比一下官网例子和这个例子,就能看出一二。
  • 能更好地满足业务需要,适当地进行扩展。
  • 采用更统一的事件处理框架。
  •  

 关于事件的介绍就先到这儿了,下一节我们会学习地图的交互!大家加油!

OpenLayers入门,OpenLayers地图鼠标点击事件使用,点击地图后弹框并显示当前位置经纬度 本章主要讲解OpenLayers地图点击事件的使用,以及监听地图点击事件后进行简单弹框并获取当前点击位置的经纬度并显示wgs84坐标位置和度分秒格式经纬度信息。 阅读详情

相关推荐

openlayers:实现弹窗显示鼠标点击位置的坐标位置(附完整源码)

openlayers:实现弹窗显示鼠标点击位置的坐标位置(附完整源码)

希望我的博客,能帮上你解决学习中工作中所遇到的问题 540

OpenLayers笔记3:地图事件监听概述及部分简单应用

目录地图事件监听概述1.鼠标触发事件2.地图移动事件3.图层渲染事件4.change事件5.其它事件地图事件监听的部分简单应用监听鼠标触发获取地图坐标监听指针移动获取指针位置矢量要素的属性值监听地图移动实现图层的动态显隐 地图事件监听概述 地图能够监听的事件主要包括: 1.鼠标触发事件 click:鼠标单击地图触发的事件(鼠标单击多少次地图,该事件就触发多少次); singleclick:鼠标单击...

getMoreTime的博客 5775

Openlayers 教程 22 - 介绍演示地图监听事件(单击双击、地图平移、地图缩放、鼠标悬浮等)

地图中的监听事件,也是经常用的功能,一般用于点击获取坐标点,进而查询数据,还有其他事件,比如双击事件、缩放事件等。

非科班Java出身GISer的博客 7043

八、OpenLayer一些常用的方法总结

9、渲染监听,适用于监听图层绘制,以及实时改变自己定义的一些元素的位置。1、获取地图的视角范围。

qq_39330397的博客 899

北斗B1频点信号捕获实战:如何应对NH码跳变带来的挑战?

本文深入探讨了北斗B1频点信号捕获中NH码跳变带来的核心挑战。针对NH码以1kHz速率调制导致的相干积分中断和相关峰畸变问题,文章提出并详细解析了一种基于伪码与多普勒频率分离技术的优化捕获方案。该方案通过差分处理消除NH跳变影响,并利用匹配滤波器与FFT分别进行码相位和多普勒频率的快速估计,有效提升了弱信号环境下的捕获灵敏度和稳定性,为北斗接收机设计提供了实用的工程参考。

joy55的博客 535

BUPT软件安全实验三

可以看出栈溢出对程序运行的安全性有很大的威胁,如果不对栈进行保护,只要系统中存在栈溢出漏洞,即可令攻击者通过非正当方法获取操作权限。(6)解决思考题,即:在不修改StackOverrun程序源代码的情况下,构造shellcode,通过JMP ESP的方式实现通过记事本打开shellcode.txt(可使用CreateProcessA或WinExec等API)。查看缓冲区信息,可以看到dest指向地址0x0012FAF0,其为数组的存放起始位置,也就是shellcode注入的起始位置。

7xun's space 1966

OpenLayers学习笔记中级篇(一、各种地图的加载)

学习了前面的初级篇,相信大家对OplenLayers已经有了一个初步的认识,下面我们再继续深入学习OpenLayers的相关功能! 我们这节主要是加载各种各样的地图,包括在线服务的地图,比如天地图、高德、OSM等,还有一些我们自己使用地图服务器发布的地图,比如使用Geoserver发布的wms地图服务,最后还介绍了常用矢量地图数据的加载,好了,让我们开始吧! 首先我们再来深入学习一下Sourc...

MagicMHD的博客 4590

面试真题集(十六):TensorRT基础

TensorRT面试真题解析:从模型优化到推理部署 本文精选了14道TensorRT面试题,涵盖选择题、简答题和场景题,深度考察推理工程师对TensorRT核心技术的理解。内容聚焦三个关键维度: 基础概念 FP16推理中Softmax层为何需保持FP32(数值稳定性) INT8校准原理(EntropyCalibrator2的鲁棒性优势) Plugin V3接口的构建/运行分离设计 性能优化 Conv-BN-ReLU融合减少40-60%延迟的关键机制(访存优化) 动态Shape配置策略(min/opt/max

PeterPan的博客 70

OpenLayers学习笔记初级篇(一、地图加载)

开源的地图包做的比较优秀比较好的就是OpenLayers了,下面我将用我的学习笔记带领一些没接触过OpenLayers的同学进行学习,目前初步将学习笔记分为初级基础篇,中级进阶篇和高级应用篇,我将通过一个个小的demo进行学习,比较有助于大家加深记忆和动手编码能力,下面我们进行初级基础的学习! 1、OpenLayers 3简介 OpenLayers 3简称ol3,它是一个开源的Web GIS引...

MagicMHD的博客 3204

STM32(HAL库)驱动HC-SR04测距模块

本文介绍通过STM32F103C8T6单片机对HC-SR04测距模块进行驱动,并且通过串口对数据进行打印。

weixin_44597885的博客 2203

基于ComfyUI+H3的本地化竖屏短剧自动化生成工作流

本文介绍了一种基于ComfyUI和MiniMax H3的本地化竖屏短剧自动化生成工作流。该方案通过纯机械读取分镜总纲表格,实现从文本到视频的全自动生成,支持多人同框稳定输出、人脸一致性保持、音视频同步生成等功能。工作流包含图像生成、人工审核、视频生成和音频处理四个核心环节,采用本地化部署方案避免云端服务的限制和成本问题。文章详细说明了环境部署步骤、必需的自定义节点安装以及显存优化配置,特别针对16GB显存设备提供了量化压缩、GPU独占调度等技术方案,确保系统流畅运行。

huanghm88的专栏 326

OpenLayers 地图事件探究

注:当前使用的是 ol版本,天地图使用的key请到天地图官网申请,并替换为自己的key地图事件贯穿于WebGIS开发的始终,用于实现地图与用户的交互操作。地图缩放、移动使用MapEvent事件;图层渲染、状态使用事件;要素绘制、选择使用事件。

GIS之路 1266

《用 Python 爬取统计局年鉴:从 API 抓取到结构化分析,实战全流程详解》

在数据分析、经济研究、商业决策中,国家统计局发布的年鉴数据具有权威性和参考价值。本篇博客将带你从零实践:了解目标、设计爬虫、抓取年度数据、解析 JSON、保存结构化数据、并用 Pandas 简要分析可视化,且使用现代 Python 最佳实践(如httpx、pydantic、typer 等),提升代码质量与效率。如何抓取国家统计局年鉴数据;利用 API 方式高效获取;使用现代异步 Python 提升性能;将数据结构化输出;结合 CLI、类型校验和简单分析技术提升实用性。

2201_76125261的博客 1085

OpenLayers基础教程——常用的地图事件

1、前言 前一篇博客介绍了事件的注册和取消注册,这篇博客就来介绍一下OpenLayers中常用的一些地图事件。 2、地图点击事件 地图点击事件如下所示: click——地图点击事件 singleclick——地图单击事件 dblclick——地图双击事件 测试代码如下: <!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title>OpenLayers</tit

HerryDong的博客 6611

Unreal5从入门到精通之一文搞懂Unreal的C++代码编译之谜

我们在开发Unreal项目时,如果时蓝图模板的项目,一般问题不大,因为当你修改完蓝图,点击编译Compile+保存Save,就可以继续开发了。这对于开发者来说也非常友好。但是,如果你使用的C++模板开发项目,代码编译一切都变得魔幻起来,IDE(VS/Rider)里面有编译,编辑器里面也有编译,有什么区别呢?我们来列举几个新手常碰到的问题。1.代码我明明新建了,编辑器里怎么看不到?2.昨天我新家的功能运行的好好的,今天怎么感觉还是老逻辑。或者昨天加的新代码,新蓝图不见了。

TxNet 1604

ardupilot开发 --- MavLink 篇

ardupilot开发 --- MavLink 篇

记录老板的每次pua,分享领导每天的毒鸡汤... 4251

OpenLayers学习笔记中级篇(四、地图图标操作)

图标是GIS应用中必不可少的要素,比如在地图上标注饭店,学校,加油站等,就需要添加图标,点击图标,可能需要提示更为详细的信息,比如地址,评价,或者更为复杂的业务信息。本节将从基本的应用入手讲解,直到比较高级一些的自定义特色图标和信息展示。 在OpenLayer3中添加图标有两种方式,一种是我们这一小节马上就要介绍的,比较传统的overlay,另一种是下一小节马上就要介绍的Feature+St...

MagicMHD的博客 3377

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

JavaWeb和WebGIS学习笔记(五)——使用OpenLayers显示地图

JavaWeb和WebGIS学习笔记(五)——使用openlayers显示地图 系列链接: Java web与web gis学习笔记(一)——Tomcat环境搭建 Java web与web gis学习笔记(二)——百度地图API调用 JavaWeb和WebGIS学习笔记(三)——GeoServer 发布shp数据地图 JavaWeb和WebGIS学习笔记(四)——使用uDig美化地图,并叠加显示多...

df1445的博客 2170

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

OpenLayers基础教程——地图事件的注册和取消

1、前言 在OpenLayers的开发中,事件的身影随处可见。例如,用户点击地图后弹出了一个对话框,这就是事件的典型应用。下面就来介绍一下如何在OpenLayers中注册事件和取消注册事件。 2、注册事件 事件的注册方式很简单,遵循如下模板即可。其中,事件名称可以是click、dblclick、pointermove等等,后面的function(event)负责编写该事件的处理逻辑。 map.on('事件名称', function (event) {}); 下面就来实现一个小功能:点击地图后显示鼠标点击位

HerryDong的博客 3751

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

OpenLayers学习笔记中级篇(二、对矢量地图的操作)

这一节我们主要对上一节我们加载的json格式的矢量地图数据进行一些操作。首先我们来看一下如何获取矢量地图的一些features。话不多说,直接上代码: 1、获取features: <!doctype html> <html xmlns=http://www.w3.org/1999/xhtml> <head> &l...

MagicMHD的博客 1980

openlayers 地图上加图标_OpenLayers学习笔记中级篇(四、地图图标操作)

图标是GIS应用中必不可少的要素,比如在地图上标注饭店,学校,加油站等,就需要添加图标,点击图标,可能需要提示更为详细的信息,比如地址,评价,或者更为复杂的业务信息。本节将从基本的应用入手讲解,直到比较高级一些的自定义特色图标和信息展示。在OpenLayer3中添加图标有两种方式,一种是我们这一小节马上就要介绍的,比较传统的overlay,另一种是下一小节马上就要介绍的Feature+Styl...

weixin_39630909的博客 1096

OpenLayers学习笔记中级篇(三、地图的分辨率设置)

LOD是Levels of Detail的简写,用于根据当前的环境,渲染不同的图像,用于降低非重要的细节度,从而提高渲染效率,在电子游戏中经常运用,对于需要显示全球地图的GIS系统而言,更需要应用这项技术。 在不同的细节层次下,自然分辨率就可能不一样,这两者是紧密结合在一起的。 对于图形显示系统而言,分辨率作为屏幕坐标和世界坐标之间计算的纽带,其作用是非常重要的。 本节将以实例的方式深入浅出的讲解...

MagicMHD的博客 4513

OpenLayers学习笔记高级篇(三、地图动画)

在OpenLayers 3中,动画是随处可见的,比如平移地图时,地图移动会有惯性,停止移动后,还会继续沿着之前的方向移动一会。 比如下面这个demo地图具有回到原始点的功能,一个是有动画效果的,一个是没有动画效果的。我们先写出来然后做一个直接的视觉对比: 1、地图有无动画的对比: <!doctype html> <html xmlns=http://www.w3.org/1...

MagicMHD的博客 2529

OpenLayers学习笔记(三)

OpenLayers学习笔记(三) 中级篇 点击地图,弹框显示点击位置经纬度 var map = new ol.Map({ layers: [ new ol.layer.Tile({ source: new ol.source.OSM() }) ], target: 'map', view: new ol.View({ //这儿要注意坐标系的转换 center: ol.proj.trans

易小花的博客 1347

Openlayers拓展右键事件

openlayers5+中没有直接的监听地图右键的功能,但是我们可以通过使用jquery监听地图所在的html元素的右键事件来实现。 一、定义右键弹出框的html元素 <div id="contextmenu_container" class="contextmenu"> <ul> <li>缩放至</li> <span class="menuLine"></...

engineer_he的博客 3498

OpenLayers 3 事件应用

OpenLayers 3 事件应用 常用鼠标事件 地图鼠标左键单击事件 对应的类为ol.Map,事件名为singleclick。 地图鼠标左键双击事件 对应的类为ol.Map,事件名为dblclick。 地图鼠标点击事件 对应的类为ol.Map,事件名为click。 地图鼠标移动事件 对应的类为ol.Map,事件名为pointermove。 地图鼠标拖拽事件 对应的类为ol.Map,事件名为pointerdrag。

大树 2598
上一篇: OpenLayers学习笔记中级篇(四、地图图标操作)
下一篇: OpenLayers学习笔记中级篇(六、地图交互)
MagicMHD
博客等级 码龄9年 503粉丝 78原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值