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

电子商务网站建设答辩记录国内永久免费的建站

电子商务网站建设答辩记录,国内永久免费的建站,在线设计图片网站总结,网站建设为什么学flash概述 本文主要介绍GeometryCollection类,GeometryCollection类继承于Geometry类,关于Geometry类,参考这篇文章源码分析之Openlayers中Geometry基类介绍 GeometryCollection类就是一组几何对象的集合. 源码分析 GeometryCollection类源码实现 GeometryCollection类源码实现…概述 本文主要介绍GeometryCollection类,GeometryCollection类继承于Geometry类,关于Geometry类,参考这篇文章源码分析之Openlayers中Geometry基类介绍 GeometryCollection类就是一组几何对象的集合. 源码分析 GeometryCollection类源码实现 GeometryCollection类源码实现如下: class GeometryCollection extends Geometry {constructor(geometries) {super();this.geometries_ geometries;this.changeEventKeys_ [];this.listenGeometriesChange_();}unlistenGeometriesChange_() {this.changeEventsKeys_.forEach(unlistenByKey);this.changeEventsKeys_.length 0;}listenGeometriesChange_() {const geometries this.geometries_;for (let i 0, ii geometries.length; i ii; i) {this.changeEventsKeys_.push(listen(geometries[i], EventType.CHANGE, this.changed, this));}}clone() {const geometryCollection new GeometryCollection(cloneGeometries(this.geometries_));geometryCollection.applyProperties(this);return geometryCollection;}closestPointXY(x, y, closestPoint, minSquaredDistance) {if (minSquaredDistance closestSquaredDistanceXY(this.getExtent(), x, y)) {return minSquaredDistance;}const geometries this.geometries_;for (let i 0, ii geometries.length; i ii; i) {minSquaredDistance geometries[i].closestPointXY(x,y,closestPoint,minSquaredDistance);}return minSquaredDistance;}containsXY(x, y) {const geometries this.geometries_;for (let i 0, ii geometries.length; i ii; i) {if (geometries[i].containsXY(x, y)) {return true;}}return false;}computeExtent(extent) {createOrUpdateEmpty(extent);const geometries this.geometries_;for (let i 0, ii geometries.length; i ii; i) {extend(extent, geometries[i].getExtent());}return extent;}getGeometries() {return cloneGeometries(this.geometries_);}getGeometriesArray() {return this.geometries_;}getGeometriesArrayRecursive() {/** type {ArrayGeometry} */let geometriesArray [];const geometries this.geometries_;for (let i 0, ii geometries.length; i ii; i) {if (geometries[i].getType() this.getType()) {geometriesArray geometriesArray.concat(geometries[i].getGeometriesArrayRecursive());} else {geometriesArray.push(geometries[i]);}}return geometriesArray;}getSimplifiedGeometry(squaredTolerance) {if (this.simplifiedGeometryRevision ! this.getRevision()) {this.simplifiedGeometryMaxMinSquaredTolerance 0;this.simplifiedGeometryRevision this.getRevision();}if (squaredTolerance 0 ||(this.simplifiedGeometryMaxMinSquaredTolerance ! 0 squaredTolerance this.simplifiedGeometryMaxMinSquaredTolerance)) {return this;}const simplifiedGeometries [];const geometries this.geometries_;let simplified false;for (let i 0, ii geometries.length; i ii; i) {const geometry geometries[i];const simplifiedGeometry geometry.getSimplifiedGeometry(squaredTolerance);simplifiedGeometries.push(simplifiedGeometry);if (simplifiedGeometry ! geometry) {simplified true;}}if (simplified) {const simplifiedGeometryCollection new GeometryCollection(simplifiedGeometries);return simplifiedGeometryCollection;}this.simplifiedGeometryMaxMinSquaredTolerance squaredTolerance;return this;}getType() {return GeometryCollection;}intersectsExtent(extent) {const geometries this.geometries_;for (let i 0, ii geometries.length; i ii; i) {if (geometries[i].intersectsExtent(extent)) {return true;}}return false;}isEmpty() {return this.geometries_.length 0;}rotate(angle, anchor) {const geometries this.geometries_;for (let i 0, ii geometries.length; i ii; i) {geometries[i].rotate(angle, anchor);}this.changed();}scale(sx, sy, anchor) {if (!anchor) {anchor getCenter(this.getExtent());}const geometries this.geometries_;for (let i 0, ii geometries.length; i ii; i) {geometries[i].scale(sx, sy, anchor);}this.changed();}setGeometries(geometries) {this.setGeometriesArray(cloneGeometries(geometries));}setGeometriesArray(geometries) {this.unlistenGeometriesChange_();this.geometries_ geometries;this.listenGeometriesChange_();this.changed();}applyTransform(transformFn) {const geometries this.geometries_;for (let i 0, ii geometries.length; i ii; i) {geometries[i].applyTransform(transformFn);}this.changed();}translate(deltaX, deltaY) {const geometries this.geometries_;for (let i 0, ii geometries.length; i ii; i) {geometries[i].translate(deltaX, deltaY);}this.changed();}disposeInternal() {this.unlistenGeometriesChange_();super.disposeInternal();} }GeometryCollection类构造函数 GeometryCollection类构造函数接受一个参数geometries,geometries是一个包含多个几何对象数组,该参数会赋给全局变量this.geometries_,然后初始化一个变量this.changeEventsKeys_为空数组,最后调用this.listenGeometriesChange_方法. GeometryCollection类的方法 GeometryCollection类的方法主要是对几何对象的一些操作,会去遍历this.geometries_变量,逐一进行操作.GeometryCollection类中的主要方法如下: listenGeometriesChange_方法:该方法在构造函数中就会被调用,其核心逻辑就是循环遍历this.geometries_,调用listen方法注册每个几何对象的change事件监听,注册事件返回的keys值保存在全局变量this.changeEventsKeys_中.listen方法的实现可以参考这篇文章源码分析之Openlayers中的Observable类 unlistenGeometriesChange_方法:用于取消监听,重置this.changeEventKeys_为空数组,解绑方法unlistenByKey同样是在event.js中实现的. clone方法:clone方法会返回一个新的几何对象集合,其内部会先调用cloneGeometries方法去clone每一个Geometry,然后实例化GeometryCollection类,再会调用applyProperties去应用this,applyProperties方法是在Object类中实现的,主要就是复制属性. closestPointXY方法:用于获取对几何对象稽核最近的点坐标,以及修改并获取最短距离;方法接受四个参数目标点坐标xy,最近点坐标以及最短距离,会先调用closestSquaredDistanceXY获取目标坐标点到边界范围的平方距离,若最短距离大于该参数最短平方距离,则返回参数minSquaredDistance;然后遍历this.geometries_,调用每一个几何对象的closestPointXY方法,修改最近点坐标和最短距离;最后返回最短距离 containsXY方法:同样地也是遍历this.geometries_调用几何对象的containsXY方法containsXY方法就是判断点是否在几何对象集合的边界上返回一个布尔值。 computeExtent方法:获取几何对象集合的边界范围 getGeometries方法:获取几何对象集合的副本调用cloneGeometries方法 getGeometriesArray方法:获取几何对象集合数组 getGeometriesArrayRecursive方法:将嵌套的几何对象如子集合展平成一个平坦的数组即若几何对象数组中的数组项也是一个数组那么就会递归调用它的getGeometriesArrayRecursive方法。 getSimplifiedGeometry方法:该方法就是用于简化几何采用了Douglas-Peucker算法。这个算法常用于简化折线几何减少点的数量同时尽可能保持原始几何形状的准确性。简化通过一个容差值来控制简化的程度容差值越大简化的结果就越简单。getSimplifiedGeometry方法会先检查修订号若当前几何对象的修订号与上次简化的修订号不一致这说明几何对象已经发生了变化需要重新计算简化后的几何对象然后会检查容差值若容差值小于0或者小于已经记录的最大容差值则不需要重新计算直接返回当前对象然后初始化一个空数组,simplifiedGeometries用于存储简化后的几何对象再遍历this.geometries_调用每个几何对象的getSimplifiedGeometry方法简化每一个几何对象若简化后的实例对象不等于原始对象则将simplified赋值为true然后实例化GeometryCollection类生成一个几何对象集合实例并返回若简化后的实例对象与原始对象相同一个几何对象也没有被简化则返回当前对象this. getType方法:获取类型返回GeometryCollection intersectsExtent方法:遍历this.geometries_然后调用每个几何对象的intersectsExtent方法判断几何对象是否与extent相交若有一个几何对象和extent相交则返回true若一个都不相交则返回false。 isEmpty方法:判断几何对象集合是否为空返回一个布尔值。 rotate方法:遍历this.geometries_然后调用每个几何对象的rotate方法,最后调用this.changed方法 scale方法:遍历this.geometries_然后调用每个几何对象的scale方法,最后调用this.changed方法 setGeometries方法:会先调用cloneGeometries方法clone每个几何对象然后调用this.setGeometriesArray方法 setGeometriesArray方法:会调用this.unlistenGeometriesChange_取消监听然后设置this.geometries_再调用this.listenGeometriesChange_方法注册监听最后调用this.changed方法 applyTransform方法:遍历this.geometries_然后调用每个几何对象的applyTransform方法,最后调用this.changed方法 translate方法:遍历this.geometries_然后调用每个几何对象的translate方法,最后调用this.changed方法 disposeInternal方法:清理函数调用this.unlistenGeometriesChange_取消监听再调用父类的disposeInternal方法 总结 本文介绍了GeometryCollection类的源码实现由此可以清晰理解GeometryCollection类主要还是一组多个对几何对象进行平移、旋转和缩放转换以及空间关系的判断等等。
http://www.w-s-a.com/news/427574/

相关文章:

  • 上海营销网站建设公司下面哪个不是网页制作工具
  • 有哪些网站可以做设计比赛苏州设计公司排名前十
  • 公益网站建设需求车陂手机网站开发
  • 高端网站建设专业营销团队宁德网站建设51yunsou
  • 网站如何做cdn购物网站建设app开发
  • 简单的手机网站模板好看大方的企业网站源码.net
  • 沈阳住房和城乡建设厅网站网站个人备案做论坛
  • 企业建网站的目的开家网站建设培训班
  • 做怎么网站网站优化和推广
  • 建站工具 风铃网站每年空间域名费用及维护费
  • 网站开发工具 知乎工业软件开发技术就业前景
  • 永济微网站建设费用新手如何自学编程
  • 在本地怎么做网站深圳保障房申请条件2022
  • 广州天河区网站建设公司东莞网络游戏制作开发
  • 哪个网站做免费小程序rio门户网站的制作
  • 短网站生成查询网站所有关键词排名
  • 阿里云购买网站登录技术服务外包公司
  • 淘宝单页面网站手机制作游戏的软件
  • 汉中市网站建设wordpress编辑器好麻烦
  • 织梦做的网站快照被攻击在线看crm系统
  • 青岛物流公司网站建设网站建设提议
  • 企业网站建设高端品牌宿州注册公司多少钱
  • 个人微信公众号怎么做微网站吗湛江网站制作方案
  • 学校网站改版南京展厅设计装修
  • 手机网站有免费做的吗建设银行网站不能登录
  • 树莓派做影视网站网站建设企业 熊账号
  • 网站iis7.5配置免费网站建设模板下载
  • 生物公司网站建设方案wordpress自定义字段调用
  • 静态网站公用头部如何调用标题wordpress自动采集翻译插件怎么用
  • 网站做单链 好不好网站营销不同阶段的网站分析目标