ol-ext沿线动画

2023-05-16

参考示例 ol-ext: Openlayers feature animation

 核心代码:

		// 核心代码
		var anim, controler;
		function animateFeature() {
			if (routeFeature) {
				anim = new ol.featureAnimation.Path({
					path: routeFeature,
					rotate: true,
					easing: ol.easing.linear,
					speed: 500,
					// revers: true
				});
				anim.on('animationstart', (e) => {
					console.log('start')
				})
				/**
				anim.on('animating', (e) => {
					map.getView().setCenter(e.geom.getCoordinates())
					map.getView().setRotation(e.rotation || 0)
				})
				**/
				anim.on('animationend', (e) => {
					console.log('end')
				})
				controler = vectorLayer.animateFeature(geoMarker, anim);
			}
		}
		animateFeature()

完整代码:

<!DOCTYPE html>
<html>
	<head>
		<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
		<title>点沿线动画</title>
		<!-- Openlayers -->
		<link rel="stylesheet" href="./dist/ol.css" />
		<script type="text/javascript" src="./dist/ol.js"></script>
		<!-- ol-ext -->
		<link rel="stylesheet" href="./dist/ol-ext.css" />
		<script type="text/javascript" src="./dist/ol-ext.js"></script>
		<style type="text/css">
			html,
			body,
			#map {
				margin: 0px;
				padding: 0px;
				width: 100%;
				height: 100%;
			}
		</style>
	</head>
	<body>
		<div id="map"></div>
	</body>
	<script type="text/javascript">
		function transform(pois) {
			return ol.proj.transform(pois, 'EPSG:4326', 'EPSG:3857')
		}

		var tileLayer = new ol.layer.Tile({
			source: new ol.source.XYZ({
				url: 'http://wprd0{1-4}.is.autonavi.com/appmaptile?lang=zh_cn&size=1&style=7&x={x}&y={y}&z={z}'
			})
		});
		var map = new ol.Map({
			controls: [],
			target: 'map',
			layers: [tileLayer],
			view: new ol.View({
				center: transform([103.584297498027, 36.119086450265]),
				zoom: 4,
			})
		});

		// 线
		var lineCoord = [
			[79.78351732091059, 38.26132508806543],
			[91.24445696667777, 40.75626733863021],
			[95.39289017514336, 33.53665615186689],
			[101.72101517514338, 38.866081722355915],
			[106.7132069666778, 33.18429652688876],
			[115.29132982091058, 36.190051824120644]
		];
		var polyline = new ol.geom.LineString(lineCoord);
		polyline.transform('EPSG:4326', 'EPSG:3857');

		const routeFeature = new ol.Feature({
			type: 'route',
			geometry: polyline,
		});
		const startMarker = new ol.Feature({
			type: 'icon',
			geometry: new ol.geom.Point(polyline.getFirstCoordinate()),
		});
		const endMarker = new ol.Feature({
			type: 'icon',
			geometry: new ol.geom.Point(polyline.getLastCoordinate()),
		});

		const position = startMarker.getGeometry().clone();
		const geoMarker = new ol.Feature({
			type: 'geoMarker',
			geometry: position,
		});

		const styles = {
			'route': new ol.style.Style({
				stroke: new ol.style.Stroke({
					width: 6,
					color: [237, 212, 0, 0.8],
				}),
			}),
			'icon': new ol.style.Style({
				image: new ol.style.Icon({
					anchor: [0.5, 1],
					src: '../openlayer/summary/node_blue.gif',
				}),
			}),
			'geoMarker': new ol.style.Style({
				image: new ol.style.RegularShape({
					radius: 14,
					points: 3,
					fill: new ol.style.Fill({
						color: '#00f'
					}),
					stroke: new ol.style.Stroke({
						color: '#fff',
						width: 2
					})
				}),
				// image: new ol.style.Icon({
				// 	anchor: [0.5, 1],
				// 	src: '../openlayer/summary/node_blue.gif',
				// }),
				stroke: new ol.style.Stroke({
					color: [0, 0, 255],
					width: 2
				}),
				fill: new ol.style.Fill({
					color: [0, 0, 255, 0.3]
				})
			}),
		};

		const vectorLayer = new ol.layer.Vector({
			source: new ol.source.Vector({
				features: [routeFeature, geoMarker, startMarker, endMarker],
			}),
			style: (feature) => {
				return styles[feature.get('type')];
			},
		})
		map.addLayer(vectorLayer);

		// 核心代码
		var anim, controler;
		function animateFeature() {
			if (routeFeature) {
				anim = new ol.featureAnimation.Path({
					path: routeFeature,
					rotate: true,
					easing: ol.easing.linear,
					speed: 500,
					// revers: true
				});
				anim.on('animationstart', (e) => {
					console.log('start')
				})
				/**
				anim.on('animating', (e) => {
					map.getView().setCenter(e.geom.getCoordinates())
					map.getView().setRotation(e.rotation || 0)
				})
				**/
				anim.on('animationend', (e) => {
					console.log('end')
				})
				controler = vectorLayer.animateFeature(geoMarker, anim);
			}
		}
		animateFeature()
	</script>
</html>

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

ol-ext沿线动画 的相关文章

  • Ext.grid.Panel表格分页

    Ext grid Panel表格分页示例 代码 xff1a cshtml 64 Layout 61 null lt DOCTYPE html gt lt html gt lt head gt lt title gt Ext grid Pan
  • ext renderer ajax,extjs4 - ExtJS Grid Dynamic Columns with Renderer - Stack Overflow

    I have a grid ExtJS 4 2 1 with dynamic columns from server This is working pretty well This is my code for reconfiguring
  • 揭开正则表达式的神秘面纱

    正则表达式30分钟入门教程 http deerchao net tutorials regex regex htm 揭开正则表达式的神秘面纱 http www regexlab com zh regref htm 原创文章 转载请保留或注明
  • javascript各种类型数据在表达式中转换成布尔型值的规则总结

    javascript中有5种数据类型 分别为 Undefined Boolean Object Number String 这几类型的数据 当他们处在表达式里面的时候 js解析器会自动将其转换成布尔值来决定当前的条件究竟符合哪个逻辑分支 当
  • 13款经典JavaScript图形和图表绘制工具

    IT168 技术 如今 在互联网上发布在线免费的Javascript图形和图表绘制工具越来越多 作者此前在一家网站从事复杂的图形学方面的工作 使用highchart 在那期间 没有大量的插件工具可供选择 不像现在 我们可以轻易地找到非常有用
  • SCJP认证试题(十一)

    author yaoyuan 10 package com sun scjp 11 public class Geodetics 12 public static final double DIAMETER 12756 32 kilomet
  • [转]Ubuntu系统GRUB无法启动全攻略

    1 装完XP Vista Win7后grub无法启动 有Live CD 这种问题是最经常遇到的 要解决问题 你需要一张ubuntu live cd 用live cd引导系统 直接按Ctrl Alt F1进入终端 输入sudo grub进入G
  • Google地图现可按照路况给出出行时间

    在 Google Maps 查询出行路线的时候 不管是公交还是自驾 它都会告诉你一个大概的全部行程需要的时间 不过如果你是在下午 5 点左右从北京出发的话 那个时间显然是痴人说梦 由于 Google Maps 本身在很多城市已经有了交通流量
  • Ext智能提示 - Eclipse 3.2

    Eclipse的Ext 2 0 2智能提示 它提供了非常准确的Ext API提示 如图 下载地址 http www agpad com downloads spket 1 6 12 zip 引用方法 方法來自會員 kittig 1 将下载回
  • Geometry Shader 概念和实例

    前言 Shader Model 4给我们带来了Geometry Shader这个玩意儿 其实这个东西早就在一些3D动画制作软件中存在了 比如Maya 8 我参考了以前DX10的哪一篇Preview与Csustan edu的一篇比较详尽的教材
  • Javascript与CSS在IE和Firefox中的误区及区别

    Javascript中的常见问题 1 集合类对象问题 现有代码中许多集合类对象取用时使用 IE 能接受 Firefox 不能 解决方法 改用 作为下标运算 如 document forms formName 改为 Js代码 document
  • linux启动,挂栽,共享,忘记密码的解决方法

    Linux修改linux的启动方式 修改linux启动方式 文本方式或xwindow方式 vi etc inittab 找到id x initdefault 一行 x 3为文本方式 x 5为xwindow方式 重启机器即可生效 mount用
  • EXTJS2.2组件Combobox下拉框获取数据

    1 获取数据 var dataPath 远程连接 var genderStore new Ext data JsonStore proxy new Ext data HttpProxy method POST url tHarvestTab
  • nodejs中文教程-windows下nodejs开发环境的安装与配置

    么是Node js 还服务器端javascript 对于这个概念我在这篇文章不做解释 可以自己去搜索了解下 服务器端js不是新技术 只是最近的node js的火爆让他爆发了 我会在以后的文章里解释什么是node js 这里只是纯粹的搭建 连
  • 让ExtJs 2.02的例子也支持换肤

    今天在论坛看到有朋友问我 网站上的换肤功能是如何做的 其实换肤的方法在下载回来的例子中是已经存在的了 但是不知道为什么该功能在ext 2 02下并不可用 要加上换肤功能主要有两个步聚 1 在html页面 每一个例子 的body中间加上以下代
  • 心得:Javascript的内存释放实验

    我以前也看过关于javascript的内存释放的文章 但我从来也没仔细看过 原因 一来我觉得这个东西可有可无 二来 鬼知道这些理论到底有没有科学根据 今天我做了一个小小的实验 证实内存释放还是有用的 比如有如下程序 var a new Ar
  • JS 触发事件整理

    一般事件 onclick IE3 N2鼠标点击时触发此事件 ondblclick IE4 N4鼠标双击时触发此事件 onmousedown IE4 N4按下鼠标时触发此事件 onmouseup IE4 N4鼠标按下后松开鼠标时触发此事件 o
  • TreePanel树形节点不收缩刷新

    TreePanel树形节点不收缩刷新 遇到的问题 在使用Ext树形组件的时候 下层节点的刷新 总是需要下层节点全部搜索然后再展开 如果需要实时的从后台获取数据 改变某些节点的text或者icon时 就显得不够优雅了 解决方案 负责树形组件T
  • IE Sieve, Memory Leak detector for Internet Explorer

    IE Sieve Memory Leak detector for Internet Explorer sIEve is a project to get rid of memory leaks due to some limitation
  • Extjs ToolBar动态更改图标

    使用setIconClass方法 Ext getCmp javaEye setIconClass javaEyeCss 其中 javaEye 是toolbar里的一个图标项 javaEyeCss 是css里定义的一个样式 形如 javaEy

随机推荐

  • IDEA导入lib目录下的jar包

    https blog csdn net u010286027 article details 85248719 ops request misc 61 amp request id 61 amp biz id 61 102 amp utm
  • MIPS、ARM、X86三大架构

    MIPS ARM X86三大架构 RISC平台的发展已经有长达几十年的历史了 其最早诞生于80年代的MIPS主机 xff0c 随着技术的不断发展 xff0c RISC平台的应用领域逐步扩展 xff0c 小到手机 xff0c 大到工控设备都可
  • 报错:Diamond types are not supported at language level ‘6‘

    在编译时报错 xff1a 这主要是1 6版本的javac exe编译器不支持菱形运算符 xff1b 解决办法 xff1a 1 修改设置settings和项目结构Project Structure中的JDK版本设置 配置IDEA编译器版本 2
  • Ubuntu18.04.3虚拟机安装步骤

    Ubuntu18 04 3虚拟机安装步骤 xff08 图文教程 xff0c 非常详细 xff01 xff01 xff01 xff09 丶无殇的博客 CSDN博客 ubuntu18虚拟机安装
  • 信号包络

    将一段时间长度的高频信号的峰值点连线 xff0c 就可以得到上方 xff08 正的 xff09 一条线和下方 xff08 负的 xff09 一条线 xff0c 这两条线就叫包络线 包络线就是反映高频信号幅度变化的曲线 对于等幅高频信号 xf
  • 归一化函数normalize详解

    opencv 2 归一化函数normalize详解 1 归一化定义与作用 归一化 就是要把需要处理的数据经过处理后 xff08 通过某种算法 xff09 限制在你需要的一定范围内 首先归一化是为了后面数据处理的方便 xff0c 其次是保证程
  • 多态性之编译期多态和运行期多态(C++版)

    多态性之编译期多态和运行期多态 C 43 43 版 C 43 43 中最为经典的就是多态性 xff0c 多态性充分体现了面向对象的思想 xff0c 并且是C 43 43 与C的最大区别之一 多态性分为编译期多态和运行期多态 xff0c 也称
  • SVM 原理详解,通俗易懂

    看了该作者的文章 xff0c 瞬间膜拜了 xff01 讲得太好了 xff01 转自 xff1a http www blogjava net zhenandaci category 31868 html xff08 一 xff09 SVM的简
  • 线阵相机学习笔记(一)

    1 GigE Vision GigE Vision是由自动化影像协会AIA Automated Imaging Association 发起指定的一种基于千兆以太网的图像传输的标准 具有传输距离长 xff08 无中继时100米 xff09
  • 如何做一个软件项目经理? ----写给公司所有的开发人员

    第一部分 xff1a 软件项目经理的要求 首先是一个管理者 xff0c 其次熟悉某些工具 xff0c 某几种语言 xff0c 行业背景 xff0c 项目管理技能 软件项目经理面临的恶劣环境 xff0c 我们绝大部分软件企业运行在相对混乱的状
  • vector介绍和基本使用

    文章目录 一 vector介绍二 vector使用 1 constructor 2 iterator 3 capacity 4 Element access 5 Modifiers 三 vector迭代器失效问题 一 vector介绍 ve
  • PELCO(派尔高)协议解析及下载(转载)

    PELCO xff08 派尔高 xff09 协议解析及下载 沈雪瑜 在IBMS接口开发 中 xff0c 我们需要用到一些常用的协议 xff0c 而PELCO 派尔高 的监控器材在我国有很广泛的应用 PELCO有自己的传输控制协议 xff0c
  • STM32&nbsp;HAL库&nbsp;STM3…

    原文地址 xff1a STM32 HAL库 STM32CUBEMX KEIL TIM1 PWM 四路输出可调 一 作者 xff1a 用户2797410335 硬件 xff1a TM32F407VET6 8M晶振 xff0c JLINK JT
  • 海康设备网络SDK开发NET_DVR_GetDeviceConfig

    由于官方的例子中没有关于NET DVR GetDeviceConfig的示例 xff0c 在此记录一下 NET DVR GET FIELD DETECTION 获取区域入侵侦测配置 xff0c 避免其他小伙伴踩坑 这里只记录主要代码 xff
  • geoserver热图

    1 参考 GeoServer发布Heatmap wenglabs 博客园 Rendering Transformations GeoServer 2 21 x User Manual 2 下载 GeoServer 及wps插件 xff0c
  • arcgis的lyr样式转qgis的sld样式

    需求 xff1a arcgis样式lyr要发布到geoserver 先说最终技术路线 xff1a qgis安装slyr插件 xff0c lyr转成xml xff0c 再通过xml配图后导出sld 避免的操作 xff1a lyr直接导出sld
  • httpclient海康ISAPI透传

    可以使用海康SDK调用NET DVR STDXMLConfig进行透传 xff0c 但是这种方式仍然比较麻烦 SDK的透传其实就是http的包装 xff0c 可以完全撇开海康SDK xff0c 也就是通过http的方式获取或者设置 xff0
  • openlayers文字随线的方向

    在不使用ol ext时需要自己计算方向 效果 xff1a 核心代码 xff1a function styleArrow start end title var arrowLonLat 61 end 0 43 start 0 2 end 1
  • openlayer点沿线动画

    Marker Animation 核心代码 xff1a 开始动画 let lastTime 61 Date now let distance 61 0 function moveFeature event const speed 61 10
  • ol-ext沿线动画

    参考示例 ol ext Openlayers feature animation 核心代码 xff1a 核心代码 var anim controler function animateFeature if routeFeature anim