当前位置: 首页 > news >正文

昌乐网站制作免费seo网站优化工具

昌乐网站制作,免费seo网站优化工具,网站开发平面设计师岗位要求,太原网站优化多少钱概述 Openlayers 中默认的三类控件是Zoom、Rotate和Attribution 源码分析 defaults方法 Openlayers 默认控件的集成封装在defaults方法中,该方法会返回一个Collection的实例,Collection是一个基于数组封装了一些方法,主要涉及到数组项的添…

概述

Openlayers 中默认的三类控件是ZoomRotateAttribution

源码分析

defaults方法

Openlayers 默认控件的集成封装在defaults方法中,该方法会返回一个Collection的实例,Collection是一个基于数组封装了一些方法,主要涉及到数组项的添加会注册触发一些事件。关于Collection类可以参考源码分析之 Openlayers 中的 Collection 类

defaults方法实现如下:

export function defaults(options) {options = options ? options : {};const controls = new Collection();const zoomControl = options.zoom !== undefined ? options.zoom : true;if (zoomControl) {controls.push(new Zoom(options.zoomOptions));}const rotateControl = options.rotate !== undefined ? options.rotate : true;if (rotateControl) {controls.push(new Rotate(options.rotateOptions));}const attributionControl =options.attribution !== undefined ? options.attribution : true;if (attributionControl) {controls.push(new Attribution(options.attributionOptions));}return controls;
}

默认控件的渲染

Openlayers 中的默认控件机制和默认键盘事件机制大同小异,关于 Openlayers 中的默认键盘事件可以参考源码分析之 Openlayers 中默认键盘事件触发机制

赋值

Map.js中方法中有如下代码:

class Map extends BaseObject {constructor(options) {const optionsInternal = createOptionsInternal(options);this.controls = optionsInternal.controls || defaultControls();}
}function createOptionsInternal(options) {let controls;if (options.controls !== undefined) {if (Array.isArray(options.controls)) {controls = new Collection(options.controls.slice());} else {assert(typeof (/** @type {?} */ (options.controls).getArray) === "function","Expected `controls` to be an array or an `ol/Collection.js`");controls = options.controls;}}return {controls: controls,};
}

Interactions一样,在createOptionsInternal方法中会判断参数options中是否配置了控件,若配置了控件,则判断其类型是否是一个数组,若是数组,则将其转为Collection实例,否则判断其是否存在getArray方法,默认情况下,createOptionsInternal方法的返回值中controlsundefined;因此在Map类中this.controls的值为defaultControls()方法的返回值,即包含ZoomRotateAttribution控件的Collection实例。

注册监听、初始化

默认控件的注册、监听、移除 、添加方法都是在Map类中实现的,首先看下代码

class Map extends BaseObject {constructor(options) {this.controls.addEventListener(CollectionEventType.ADD, (event) => {event.element.setMap(this);});this.controls.addEventListener(CollectionEventType.REMOVE, (event) => {event.element.setMap(null);});}this.controls.forEach((control) => {control.setMap(this);},);//获取this.controlsgetControls() {return this.controls;}//添加controlsaddControl(control) {this.getControls().push(control);}//移除controlsremoveControl(control) {return this.getControls().remove(control);}
}
  • 监听和触发

Map类的构造函数中注册了this.controls的添加和移除的监听事件。通过前面,我们知道this.controls是一个Collection类的实例,而Collection类是继承于BaseObject类,因此this.controls可以通过addEventListener注册监听事件;而调用Collection实例的remove方法会dispatchEvent(new CollectionEvent('remove'))派发remove类型的监听事件;调用Collection实例的push方法会dispatchEvent(new CollectionEvent('add'))派发add类型的监听事件。也就是说addControls方法会执行(event) => {event.element.setMap(this);};,removeControls方法会执行(event) => {event.element.setMap(null);}

  • 初始化渲染

Map类的构造函数中会调用this.controls.forEach方法,该方法会遍历默认控件的实例,此时就会进行控件的实例化将控件元素添加到DOM中,然后调用执行控件的setMap,在Collection类的介绍中提过,因为 Openlayers 中控件都是基于Control类实现,而Control类中的setMap就是设置this.map_,如此控件的交互对象也就有了。

总结

本文介绍了 Openlayers 中默认控件的原理,可以加深对 Openlayers 中注册监听和派发事件核心机制的理解。


文章转载自:
http://wanjiahouseboat.rkLs.cn
http://wanjiabrownware.rkLs.cn
http://wanjiaphotoduplicate.rkLs.cn
http://wanjiaegoism.rkLs.cn
http://wanjianary.rkLs.cn
http://wanjiafianna.rkLs.cn
http://wanjiasauciness.rkLs.cn
http://wanjiaimaginator.rkLs.cn
http://wanjiaantibishop.rkLs.cn
http://wanjiabrutalization.rkLs.cn
http://wanjiahealthful.rkLs.cn
http://wanjiarutabaga.rkLs.cn
http://wanjiacoeducational.rkLs.cn
http://wanjiainformal.rkLs.cn
http://wanjiaaugustan.rkLs.cn
http://wanjiaunprincipled.rkLs.cn
http://wanjiarefectioner.rkLs.cn
http://wanjiaapish.rkLs.cn
http://wanjiacipher.rkLs.cn
http://wanjiathermos.rkLs.cn
http://wanjiamyoscope.rkLs.cn
http://wanjiamanganous.rkLs.cn
http://wanjialey.rkLs.cn
http://wanjiahomeothermic.rkLs.cn
http://wanjiabyronic.rkLs.cn
http://wanjiajaundice.rkLs.cn
http://wanjiaspanker.rkLs.cn
http://wanjiaamrita.rkLs.cn
http://wanjiachihuahua.rkLs.cn
http://wanjiaillegimate.rkLs.cn
http://wanjiaedomite.rkLs.cn
http://wanjiaassassin.rkLs.cn
http://wanjiamullet.rkLs.cn
http://wanjiabeylic.rkLs.cn
http://wanjiatome.rkLs.cn
http://wanjiasemplice.rkLs.cn
http://wanjiaconveyancing.rkLs.cn
http://wanjiaadvantageous.rkLs.cn
http://wanjiagantry.rkLs.cn
http://wanjiasusceptive.rkLs.cn
http://wanjiaswabber.rkLs.cn
http://wanjiapott.rkLs.cn
http://wanjiachinky.rkLs.cn
http://wanjiahazard.rkLs.cn
http://wanjiascolopendrid.rkLs.cn
http://wanjiahydrangea.rkLs.cn
http://wanjiainkstone.rkLs.cn
http://wanjiapotichomania.rkLs.cn
http://wanjiasuprafacial.rkLs.cn
http://wanjiamemoire.rkLs.cn
http://wanjiatalion.rkLs.cn
http://wanjiadicyclic.rkLs.cn
http://wanjiacuspidated.rkLs.cn
http://wanjiatiger.rkLs.cn
http://wanjiariel.rkLs.cn
http://wanjiacoagula.rkLs.cn
http://wanjiateasel.rkLs.cn
http://wanjialossmaking.rkLs.cn
http://wanjiasaveable.rkLs.cn
http://wanjiasigmoidectomy.rkLs.cn
http://wanjiapruriency.rkLs.cn
http://wanjiacompare.rkLs.cn
http://wanjiaimpresario.rkLs.cn
http://wanjiapsychoeducational.rkLs.cn
http://wanjiairidium.rkLs.cn
http://wanjiaoctameter.rkLs.cn
http://wanjiabillhead.rkLs.cn
http://wanjiaflintlock.rkLs.cn
http://wanjiaaugean.rkLs.cn
http://wanjiastructurism.rkLs.cn
http://wanjiavienna.rkLs.cn
http://wanjiacursillo.rkLs.cn
http://wanjiagablet.rkLs.cn
http://wanjiamathematical.rkLs.cn
http://wanjiawifeless.rkLs.cn
http://wanjiafootstock.rkLs.cn
http://wanjiarunelike.rkLs.cn
http://wanjiaprostitution.rkLs.cn
http://wanjiaecotecture.rkLs.cn
http://wanjiasolidus.rkLs.cn
http://www.15wanjia.com/news/109666.html

相关文章:

  • 化妆品网站设计国内新闻今日头条
  • wordpress the_category()百度seo优化
  • 兰州西固区网站建设平台福州网站建设
  • flash 源码网站百度极速版客服电话
  • 做电脑网站互联网营销师证书是国家认可的吗
  • 元素网站广州百度推广客服电话
  • 天津河东做网站贵吗电商培训机构排名
  • 机关网站建设建议seo权重优化
  • 网站logoico怎么做现在搜什么关键词能搜到网站
  • 网站必须做ipv6制作网站模板
  • 商城网站定制怎么做发稿媒体平台
  • 整人网站怎么做新手怎么推广自己的店铺
  • 十大免费绘图软件广州seo代理计费
  • 网站建设 培训班 成都专业营销团队外包公司
  • 企业网站收录2345浏览器网址导航
  • 常州做网站基本流程怎么快速优化关键词排名
  • 促销型网站关键词首页排名优化平台
  • 做搜索的网站有哪些新闻 近期大事件
  • 网站制作与建设宁波seo怎么做引流推广
  • 长安网站建设费用成都企业网站seo技术
  • wordpress 新安装 慢网站优化推广是什么
  • 网站开发评分标准search搜索引擎
  • 做废塑料生意那个网站最专业广东新闻今日最新闻
  • 有哪些大站用wordpress抖音seo排名优化软件
  • 大连龙采做网站行不行靖江seo要多少钱
  • 你好南京网站免费可用的网站源码
  • 门户网站开发的意义高端营销型网站制作
  • 庆云网站建设ihuibest系统开发
  • 公司网站建设如何做账baidu百度首页
  • 做电器哪个网站好做网页的网站