求,什么是有向图的拓扑序列求法地图

君,已阅读到文档的结尾了呢~~
拓扑地图模型和图库一体化研究,模型拓扑,京津冀一体化地图,三地图库,绿站地图库,地图库,世界地图3d模型,魔兽地图模型,中国地图3d模型,红五三地图库在哪
扫扫二维码,随身浏览文档
手机或平板扫扫即可继续访问
拓扑地图模型和图库一体化研究
举报该文档为侵权文档。
举报该文档含有违规或不良信息。
反馈该文档无法正常浏览。
举报该文档为重复文档。
推荐理由:
将文档分享至:
分享完整地址
文档地址:
粘贴到BBS或博客
flash地址:
支持嵌入FLASH地址的网站使用
html代码:
&embed src='/DocinViewer--144.swf' width='100%' height='600' type=application/x-shockwave-flash ALLOWFULLSCREEN='true' ALLOWSCRIPTACCESS='always'&&/embed&
450px*300px480px*400px650px*490px
支持嵌入HTML代码的网站使用
您的内容已经提交成功
您所提交的内容需要审核后才能发布,请您等待!
3秒自动关闭窗口查看:836|回复:14
各位童鞋,技术高手们,网络试题要求画拓扑图并解释,小弟小菜忘大家指点一二。要求如下
网络及机房设计方案
1internet接入500m
2计算机终端1000台
3外地分公司10个
4服务器50台
5机房周边设备另附
注 1设计时需要考虑网络的保密性,完整性和可用性
& &&&2主干网络设计符合等保3级,重点防护区等保2级3级并存。
谢谢大家了,希望能拿些干货来让我学习学习阿,。
论坛首席搬砖工程师
自己的作业自己做,做完了让大神给你看着出一点修改的方案可以,直接让别人给你画图怕是不合适吧
51CTO信息安全交流群: 入群请说明论坛ID
谁有时间给你画图啊。你以为2-3分钟的事啊 就算你是有偿的都不一定有人帮你!
论坛首席搬砖工程师
自己画拓扑,然后看等级保护3级需要什么再改,最后觉得没问题了,发上来让大神再给你看一看,自己仔细用心画画能学会不少东西,这么好的学习机会,加油吧,少年
51CTO信息安全交流群: 入群请说明论坛ID
各位童鞋,大神们说的对。我下午上图,望各位前辈指导.
各位童鞋,大神们说的对。我下午上图,望各位前辈指导.
本帖最后由 alantamhua 于
16:34 编辑
望大家多提宝贵意见!小弟感激不尽。
有没有钱 有钱主干上堆叠 热备方案& && & 没钱 这样已经很不错了& &路由走isis&&或者OSPF& && & 分公司规模大VPN&&sec& & 小用vpn ssl
感慨,你搞IT行业屈才了,你画画绝对能当画家 ,网络拓扑图手绘这么漂亮,太强
如果500m是多线路接入的,2电信,2联通,1移动。是否要加链路均衡器,10个分支机构要挂靠几个防火墙做VPN,
论坛首席搬砖工程师
如果接入链路较多,应当考虑负载均衡设备
如果要符合等保三级,网络中必须有IDS设备和日志审计设备,这也是不可缺少的。
至于各个分支,如果有钱就用防火墙和总部的防火墙做vpn如果没钱,用路由器即可。
你图上的服务器,已经放到了DMZ区,如果有钱,可以从核心上单独划分出服务器区,然后这个服务器区和核心中间用防火墙做边界隔离。
51CTO信息安全交流群: 入群请说明论坛ID
lover119老师你好,感谢你真诚的指导。现在考虑多线路接入,而且资金完全充足的情况下设计。你看这个思路是否正确,正确的画我再上图。首先ips多线路接入链路均衡设备----防火墙-------(是否防火墙需要2个做双机热备,或者还是在3层核心交换机放2个做双机热备)------路由器(是否需要)-------三层核心交换(是否需要2个做双机热备)----------二层交换机---------各vlan对应的部门电脑。各分支机构加防火墙与总部防火墙直接建立ipsecVPN,服务器设立群集直接挂三层核心下单独vlan。
中级工程师
画拓扑图用VISIO挺好
论坛首席搬砖工程师
引用:原帖由 alantamhua 于
18:06 发表
lover119老师你好,感谢你真诚的指导。现在考虑多线路接入,而且资金完全充足的情况下设计。你看这个思路是否正确,正确的画我再上图。首先ips多线路接入链路均衡设备----防火墙-------(是否防火墙需要2个做双机热备,或者还 ... 如果你们不考虑花钱,那就都双机,负载设备过来以后是两个防火墙,然后两个核心,vpn设备可以采购专门的vpn设备,因为考虑到负载设备后面的防火墙要用透明模式,可能无法做vpn
51CTO信息安全交流群: 入群请说明论坛ID
优秀技术经理
引用:原帖由 alantamhua 于
09:08 发表
各位童鞋,大神们说的对。我下午上图,望各位前辈指导. 防火墙那边,应该划个DMZ区,那些需要外网访问的机器,都放在DMZ区。
有钱的话,防火墙、路由器、三层核心交换机,都上双机做多链路热备和负载均衡。
本帖最后由 xzjfl 于
15:37 编辑拓扑学_百度百科
声明:百科词条人人可编辑,词条创建和修改均免费,绝不存在官方及代理商付费代编,请勿上当受骗。
拓扑学(topology)是研究几何图形或空间在连续改变形状后还能保持不变的一些性质的学科。它只考虑物体间的位置关系而不考虑它们的形状和大小。在拓扑学里,重要的拓扑性质包括与紧致性。[1]
拓扑英文名是Topology,直译是地志学,最早指研究地形、地貌相类似的有关学科。拓扑学是由几何学与集合论里发展出来的学科,研究空间、维度与变换等概念。这些词汇的来源可追溯至哥特佛莱德·,他在17世纪提出“位置的几何学”(geometria situs)和“位相分析”(analysis situs)的说法。的柯尼斯堡与被认为是该领域最初的定理。[1]
拓扑学的一些内容早在十八世纪就出现了,后来在拓扑学的形成中占着重要的地位。[2]
拓扑学学科起源
有关拓扑学的一些内容早在十八世纪就出现了。那时候发现一些孤立的问题。后来在拓扑学的形成中占着重要的地位。譬如哥尼斯堡七桥问题、多面体的、四色问题等都是拓扑学发展史的重要问题。
拓扑学七桥问题
18世纪著名古典数学问题之一。在哥尼斯堡的一个公园里,有七座桥将普雷格尔河中两个岛及岛与河岸连接起来(如图)。问是否可能从这四块陆地中任一块出发,恰好通过每座桥一次,再回到起点?欧拉于1736年研究并解决了此问题,他把问题归结为如左图的“一笔画”问题,证明上述走法是不可能的。
有关图论研究的热点问题。18世纪初普鲁士的哥尼斯堡,有一条河穿过,河上有两个小岛,有七座桥把两个岛与河岸联系起来(如左图上)。有个人提出一个问题:一个步行者怎样才能不重复、不遗漏地一次走完七座桥,最后回到出发点。后来大数学家欧拉把它转化成一个几何问题(如左图下)——一笔画问题。他不仅解决了此问题,且给出了连通图可以一笔画的充要条件是:奇点的数目不是0个就是2个(连到一点的数目如是奇数条,就称为奇点,如果是偶数条就称为偶点,要想一笔画成,必须中间点均是偶点,也就是有来路必有另一条去路,奇点只可能在两端,因此任何图能一笔画成,奇点要么没有要么在两端)[3]
拓扑学欧拉定理
在拓扑学的发展历史中,还有一个著名而且重要的关于多面体的定理也和欧拉有关。这个定理内容是:如果一个的顶点数是v、棱数是e、面数是f,那么它们总有这样的关系:f+v-e=2。
根据多面体的,可以得出这样一个有趣的事实:只存在五种正多面体。它们是、、、、。
拓扑学四色问题
著名的“四色问题”也是与拓扑学发展有关的问题,又称四色猜想。1852年,毕业于伦敦大学的弗南西斯.格思里来到一家科研单位搞地图着色工作时发现:每幅地图都可以用四种颜色着色,使得有共同边界的国家都被着上不同的颜色。
1872年,英国当时最著名的数学家正式向伦敦数学学会提出了这个问题,于是四色猜想成了世界数学界关注的问题。1976年,美国数学家与在美国伊利诺斯大学的两台不同的电子计算机上,用了1200个小时,做了100亿种判断,终于完成了四色定理的证明。不过不少数学家并不满足于计算机取得的成就,他们认为应该有一种简捷明快的书面。
拓扑学学科简介
原意为地貌,起源于希腊语Τοπολογ。形式上讲,拓扑学主要研究“拓扑空间”在“连续变换”下保持不变的性质。简单的说,拓扑学是研究连续性和连通性的一个数学分支。
拓扑学起初叫形势分析学,是德国数学家1679年提出的名词。十九世纪中期,德国数学家在复变函数的研究中强调研究函数和积分就必须研究形势分析学。从此开始了现代拓扑学的系统研究。
拓扑学等价
在拓扑学里不讨论两个图形全等的概念,但是讨论拓扑等价的概念。比如,圆和方形、三角形的形状、大小不同,但在拓扑变换下,它们都是等价图形;足球和橄榄球,也是等价的----从拓扑学的角度看,它们的是完全一样的。
而的表面和足球的表面则有不同的拓扑性质,比如游泳圈中间有个“洞”。在拓扑学中,足球所代表的空间叫做,游泳圈所代表的空间叫,球面和环面是“不同”的空间。
拓扑学性质
莫比乌斯曲面
“连通性”最简单的拓扑性质。上面所举的空间的例子都是连通的。而“可定向性”是一个不那么平凡的性质。我们通常讲的平面、曲面通常有两个面,就像一张纸有两个面一样。这样的空间是可定向的。而德国数学家莫比乌斯()在1858年发现了莫比乌斯曲面。这种曲面不能用不同的颜色来涂满。莫比乌斯曲面是一种“不可定向的”空间。可定向性是一种拓扑性质。这意味着,不可能把一个不可定向的空间连续的变换成一个可定向的空间。
拓扑学发展简史
拓扑学萌芽
拓扑学起初叫形势分析学,这是德国数学家1679年提出的名词。在1736年解决了七桥问题,1750年发表了多面体公式;高斯1833年在电动力学中用定义了空间中两条封闭曲线的环绕数。Topology这个词是由J.B.利斯廷提出的(1847),源自希腊文τ?πο?和λ?γο?(“位置”和“研究”)。这是拓扑学的萌芽阶段。
1851年,德国数学家在复变函数的研究中提出了黎曼面的几何概念,并且强调为了研究函数、研究积分,就必须研究形势分析学。黎曼本人解决了可定向闭曲面的分类问题。
组合拓扑学的奠基人是法国数学家。他是在和力学的工作中,特别是关于复函数的化和关于微分方程决定的曲线的研究中,引向拓扑学问题的。他的主要兴趣在。在年间,他创立了用剖分研究流形的基本方法。他引进了许多不变量:基本群、同调、数、挠系数,探讨了三维流形的拓扑分类问题,提出了著名的。
拓扑学的另一渊源是分析学的严密化。的严格定义推动从1873年起系统地展开了中的点集的研究,得出许多拓扑概念,如聚点(点)、、闭集、稠密性、连通性等。在点集论的思想影响下,分析学中出现了(即函数的函数)的观念,把函数集看成一种几何对象并讨论其中的极限。这终于导致抽象空间的观念。
拓扑学点集拓扑
最早研究抽象空间的是M.-R.。他在19
06年引进了的概念。F.在《集论大纲》(1914)中用开定义了比较一般的拓扑空间,标志着用研究连续性的一般拓扑学的产生。随后和苏联学派对拓扑空间的基本性质(分离性、紧性、连通性等)做了系统的研究。经过20世纪30年代中期起的补充(一致性空间、仿紧性等)和整理,一般拓扑学趋于成熟,成为第二次世界大战后数学研究的共同基础。
欧氏空间中的点集的研究,例如,一直是拓扑学的重要部分,已发展成一般拓扑学与代数拓扑学交汇的领域,也可看作几何拓扑学的一部分。50年代以来,即问两个映射,以R.H.宾为代表的美国学派的工作加深了对流形的认识,是问两个给定的映射是否,在四维的证明中发挥了作用。从引起的维数及的研究,习惯上也看成一般拓扑学的分支。
拓扑学代数拓扑
L.E.J.在年间提出了用单纯映射逼近连续映射的方法, 许多重要的几何现象,用以证明了不同维的欧氏空间不同胚,它们就不同胚。引进了同维流形之间的映射的度以研究同伦分类,并开创了。他使组合拓扑学在概念精确、论证严密方面达到了应有的标准。紧接着,J.W.亚历山大1915年证明了贝蒂数与挠系数的拓扑不变性。
随着学的兴起,1925年左右A.E.提议把组合拓扑学建立在群论的基础上,在她的影响下H.1928年定义了同调群。从此组合拓扑学逐步演变成利用抽象代数的方法研究拓扑问题的代数拓扑学。如维数、欧拉数,S.艾伦伯格与N.E.斯廷1945年以化的方式总结了当时的,后写成《代数拓扑学基础》(1952),对于代数拓扑学的传播、应用和进一步发展起了巨大的推动作用。他们把代数拓扑学的基本精神概括为:把拓扑问题转化为代数问题,通过计算来求解。直到今天,同调论所提供的仍是拓扑学中最易于计算和最常用的不变量[4]
拓扑学同伦论
同伦论研究空间的以及映射的同伦分类。W.赫维茨年间引进了拓扑空间的n维同伦群,其元素是从n维球面到该空间的映射的同伦类,一维同伦群就是。同伦群提供了从拓扑到代数的另一种过渡,其几何意义比同调群更明显,但是极难计算。同伦群的计算,特别是球面的同伦群的计算问题刺激了拓扑学的发展,产生了丰富多彩的理论和方法。1950年法国数学家利用J.勒雷为研究的同调论而发展起来的谱序列这个代数工具,在同伦群的计算上取得突破。
从50年代末在学和学的影响下产生了K理论,以及其他几种广义同调论。它们都是从拓扑到代数的过渡。尽管几何意义各不相同,代数性质却都与同调或上同调十分相像,是代数拓扑学的有力武器。从理论上也弄清了,同调论(普通的和广义的)本质上是同伦论的一部分。
拓扑学微分拓扑
是研究与可微映射的拓扑学。随着和微分几何的进步,在30年代重新兴起。H·惠特尼(H. Whitney)在1935年给出了微分流形的一般定义,并证明它总能高维欧氏空间。为了研究微分流形上的向量场,他还提出了的概念,从而使许多几何问题都与同调()和同伦问题联系起来了。
1953年R·托姆(Rene Thom)的理论开创了微分拓扑学与代数拓扑学并肩跃进的局面,许多困难的微分拓扑问题被化成代数拓扑问题而得到解决,同时也刺激了代数拓扑学的进一步发展。1956年米尔诺发现七维球面上除了通常的微分结构之外,还有不同寻常的微分结构。随后,不能赋以任何微分结构的流形又被人构作出来,这些都显示、微分流形以及介于其间的分段流形(piecewise linear manifold)这三个有巨大的差别,也从此被公认为一个独立的拓扑学分支。1960年证明了五维以上微分流形的庞加莱猜想。[5]
J.W.米尔诺等人发展了处理微分流形的基本方法──剜补术,使以上流形的分类问题亦逐步趋向代数化。
突出的领域如的上述三大范畴之间的关系以及三维、四维流形的分类。80年代初的重大成果有:证明了四维庞加莱猜想,发现四维欧氏空间存在不同寻常的微分结构。这种种研究,通常泛称几何拓扑学,以强调其几何色彩,区别于代数味很重的同伦论。
拓扑学超导现象
2016年10月,科学家打开了一个未知的世界,物质可以以一种奇怪的状态存在,他们利用先进的数学方法来研究不同寻常物质状态,如超导体、超流体或磁膜等。决定性的发现是三位获奖者使用了物理拓扑的概念,给他们后来的发现起到了决定性作用。
三位科学家采用拓扑学作为研究工具,这一举动在当时让同行感到吃惊。在上世纪70年代早期,当时的理论认为超导现象和超流体现象不可能在薄层中产生,而Michael Kosterlitz 和David Thouless推翻了这一理论。他们证明了超导现象能够在低温下产生,并阐释了超导现象在较高温度下也能产生的机制——相变。[2]
拓扑学学科影响
连续性与离散性这对矛盾在自然现象与社会现象中普遍存在着,数学也可以粗略地分为连续性的与离散性的两大门类。拓扑学对于连续性数学自然是带有根本意义的,对于离散性数学也起着巨大的推进作用。例如,拓扑学的基本内容已经成为现代数学工作者的常识。拓扑学的重要性,体现在它与其他数学分支、其他学科的相互作用。拓扑学在、、、微分几何、微分方程其他许多数学分支中都有广泛的应用。
拓扑学微分几何
拓扑学与微分几何学有着血缘关系,它们在不同的层次上研究流形的性质。为了研究上的测地线,H.M.在20世纪20年代建立了非退化临界点理论(摩尔斯理论),把流形上的临界点的指数与流形本身的贝蒂数联系起来,并发展成大范围。后来又用于拓扑学中,证明了典型群的同伦群的周期性定理,并启示了处理微分流形的剜补术。、、给E·嘉当的整体微分几何学提供了合适的理论框架,也从中获取了强大的动力和丰富的课题。陈省身在40年代引进了“陈示性类”,就不但对微分几何学影响深远,对拓扑学也十分重要。和联络论一起为理论物理学中杨-米尔斯理论提供了现成的数学框架, 犹如20世纪初对于A.爱因斯坦的作用。规范场的研究又促进了四维的出人意料的进展。
拓扑学分析学
拓扑学对于分析学的现代发展起了极大的推动作用。随着科学技术的发展,需要研究各式各样的非线性现象,更多地求助于拓扑学。要问一个结能否解开(即能否变形放的圆圈),30年代J.勒雷和J.P.绍把L.E.J.布劳威尔的和映射度理论推广到形成了拓扑度理论。后者以及前述的临界点理论,都已成为研究非线性的标准的工具。的进步,促进了分析学向上的分析学(又称大范围分析学)发展。在托姆的影响下,然后随意扭曲,微分映射的结构稳定性理论和已发展成为重要的分支学科。S.斯梅尔在60年代初开始的微分的理论。就是流形上的论。M.F.阿蒂亚等人60年代初创立了微分流形上的椭圆型理论。著名的把算子的解析指标与流形的示性类联系起来,是分析学与拓扑学结合的范例。现代的算子代数已与K理论、指标理论、叶状结构密切相关。在多方面,来自的已经成为基本工具。
拓扑学抽象代数
拓扑学的需要大大刺激了抽象代数学的发展,并且形成了两个新的代数学分支:与代数K理论。代数几何学从50年代以来已经完全改观。托姆的配边理论直接促使的黎曼-罗赫定理的产生,后者又促使拓扑K 理论的产生。现代代数几何学已完全使用上同调的语言,与代数群也在此基础上取得许多重大成果,例如有关不定方程解数目估计的猜想和莫德尔猜想的证明。范畴与函子的观念,是在概括的方法论时形成的。已深入数学基础、代数几何学等分支,对拓扑学本身也有影响。如拓扑斯的观念大大拓广了经典的观念。
拓扑学经济学
在经济学方面,冯·诺伊曼首先把不动点定理用来证明均衡的存在性。在现代数理经济学中,对于经济的数学模型,均衡的存在性、性质、计算等根本问题都离不开代数拓扑学、、大范围分析的工具。在、对策论、、网络论中拓扑学也都有重要应用。
拓扑学其他学科
托姆以微分拓扑学中微分映射的奇点理论为基础创立了,为从量变到质变的转化提供各种数学模式。在物理学、化学、生物学、语言学等方面已有不少应用。除了通过各数学分支的间接的影响外,拓扑学的概念和方法对物理学(如液晶结构缺陷的分类)、化学(如分子的拓扑构形)、生物学(如DNA的环绕、)都有直接的应用。
拓扑学初等实例
除去七桥问题,四色问题,欧拉定理等,拓扑学中还有很多有趣并且很基本的问题。
拓扑学纽结问题
空间中一条自身不相交的封闭曲线,会发生打结现象。要问一个结能否解开(即能否变形成平放的圆圈),或者问两个结能否互变,并且不只做个模型试试,还要给出证明,那就远不是件容易的事了(见)。
拓扑学维数概念
什么是曲线?朴素的观念是点动成线,随一个参数(时间)连续变化的动点所描出的轨迹就是曲线。可是,皮亚诺在1890年竟造出一条这样的“曲线”,它填满整个正方形!这激发了关于概念的深入探讨,经过20~30年才取得关键性的突破。
拓扑学向量场问题
考虑光滑曲面上的连续的切,即在曲面的每一点放一个与曲面相切的向量,并且其分布是连续的,其中向量等于0的地方叫作。例如,地球表面上每点的风速向量就组成一个随时间变化的切向量场,而奇点就是当时没风的地方。从直观经验看出,球面上的连续切向量场一定有奇点,而环面上却可以造出没有奇点的向量场。 进一步分析,每个奇点有一个“指数”,即当动点绕它一周时,动点处的向量转的圈数;此指数有正负,视动点绕行方向与向量转动方向相同或相反而定。球面上切向量场,只要奇点个数是有限的,这些奇点的指数的代数和(正负要相消)恒等于2;而环面上的则恒等于0。这2与0恰是那两个曲面的欧拉数,这不是偶然的巧合。这是拓扑学中的庞加莱-霍普夫定理。
拓扑学不动点问题
考虑一个曲面到自身的连续变换(映射),即曲面的每一点被移到该曲面上的新的位置,连续是指互相邻近的点被移到互相邻近的点,新旧位置相同的点叫作这变换的不动点。随后,每个不动点也有个“指数”,即当动点绕它一周时,从动点指向其像点的向量转动的圈数。拓扑学家们发现,曲面到自身的映射的不动点个数如果是有限的,它们的指数的代数和不会因对这映射做细微的修改而改变,因而可从这映射的某些粗略的特征计算出来。特别是对于实心圆上的映射,指数和恒为1,所以实心圆到自身的映射总有不动点。[6]
拓扑学子领域
一般拓扑学建立拓扑的基础,并研究拓扑空间的性质,以及与拓扑空间相关的概念。一般拓扑学亦被称为点集拓扑学,被用于其他数学领域(如紧致性与连通性等主题)之中。
代数拓扑学运用同调与同伦群等代数结构量测连通性的程度。
微分拓扑学研究在微分流形上的可微函数,与微分几何密切相关,并一齐组成微分流形的几何理论。
几何拓扑学主要研究流形与其对其他流形的嵌入。几何拓扑学中一个特别活跃的领域为“低维拓扑学”,研究四维以下的流形。几何拓扑学亦包括“纽结理论”,研究数学上的纽结。[1]
拓扑学科研人员
日下午5点45分,2016年诺贝尔物理学奖揭晓,三位英美科学家David J. Thouless, F. Duncan M. Haldane,J. Michael Kosterlitz获奖。获奖理由是“理论发现拓扑相变和拓扑相物质”。其中,David J. Thouless独享一半奖金,F. Duncan M. Haldane与J. Michael Kosterlitz分享另一半奖金。
David J. Thouless,1934年出生于英国贝尔斯登,1958年从美国康奈尔大学获得博士学位。现为美国华盛顿大学荣誉退休教授。
F. Duncan M. Haldane,1951年出生于英国伦敦,1978年从英国剑桥大学获得博士学位。现为美国普林斯顿大学物理学教授。
J. Michael Kosterlitz,1942年出生于英国阿伯丁,1969年从英国牛津大学获得博士学位。现为美国布朗大学物理学教授。[2]
.wikipedia[引用日期]
.凤凰资讯[引用日期]
.七桥问题[引用日期]
Switzer.《代数拓扑》(Algebraic Topology):Springer,2002年
Milnor.Morse Theory:Princeton University Press,1963
.维基百科[引用日期]ECharts+百度地图网络拓扑应用 - xhload3d - 博客园
前一篇谈及到了整合的应用,后来在ECharts的Demo中看到了有关空气质量的相关报表应用,就想将百度地图、ECharts和HT for Web三者结合起来也做一个类似空气质量报告的报表+拓扑图应用,于是有了下面的Demo:
在这个Demo中,将拓扑图组件添加到百度地图组件中,覆盖在百度地图组件之上,并且在百度地图组件上和GraphView拓扑图组件上分别添加事件监听,相互同步经纬度和屏幕位置信息,从而来控制拓扑图上的组件位置固定在地图上,并在节点和节点之间的连线上加上了流动属性。右下角的图标框是采用的Panel面板组件结合ECharts图表组件完成的。
接下来我们来看看具体的代码实现:
1.百度地图是如何与HT for Web组件结合的;
map = new BMap.Map("map");
var view = graphView.getView();
view.className = 'graphView';
var mapDiv = document.getElementById('map');
mapDiv.firstChild.firstChild.appendChild(view);
首先需要在body中存在id为map的div,再通过百度地图的api来创建一个map地图对象,然后创建拓扑图组件,并获取GraphView组件中的view,最后将view添加到id为map的div的第二代孩子节点中。这时候问题就来了,为什么要将view添加到map的第二代孩子节点中呢,当你审查元素时你会发现这个div是百度地图的遮罩层,将view添加到上面,会使view会是在地图的顶层可见,不会被地图所遮挡。
2.百度地图和GraphView的事件监听;
map.addEventListener('moveend', function(e){
resetPosition();
map.addEventListener('dragend', function(e){
resetPosition();
map.addEventListener('zoomend', function(e){
resetPosition();
graphView.handleScroll = function(){};
graphView.handlePinch = function(){};
function resetPosition(e){
graphView.tx(0);
graphView.ty(0);
dataModel.each(function(data){
var lonLat,
if(data instanceof ht.HtmlNode){
if(data.getId() != 'chartTotal') {
position = data.getHost().getPosition();
position = {x: position.x + 168, y: position.y + 158};
data.setPosition(position.x, position.y);
} else if(data instanceof ht.Node){
lonLat = data.lonL
position = map.pointToPixel(lonLat);
data.setPosition(position.x,position.y);
首先监听map的三个事件:moveend、&dragend、&zoomend,这三个事件做了同一件事--修改DataModel中所有data的position属性,让其在屏幕上的坐标与地图同步,然后将GraphView的Scroll和Pinch两个事件的执行函数设置为空函数,就是当监听到Scroll或者Pinch事件时不做任何的处理,将这两个事件交给map来处理。
在resetPosition函数中,做的事情很简单:遍历DataModel中的data,根据它们各自在地图上的经纬度来换算成屏幕坐标,并将坐标设置到相应的data中,从而达到中的节点能够固定在地图上的效果。
3.创建右下角的图表组件:
ht.Chart = function(option){
var self = this,
view = self._view = document.createElement('div');
view.style.position = 'absolute';
view.style.setProperty('box-sizing', 'border-box', null);
self._option =
self._chart = echarts.init(self.getView());
if(option)
self._chart.setOption(option);
self._FIRST =
ht.Default.def('ht.Chart', Object, {
ms_fire: 1,
ms_ac: ['chart', 'option', 'isFirst', 'view'],
validateImpl: function(){
var self = this,
chart = self._
chart.resize();
if(self._FIRST){
self._FIRST =
chart.restore();
setSize: function(w, h){
var view = this._
view.style.width = w + 'px';
view.style.height = h + 'px';
function createPanel(title, width, height){
chart = new ht.Chart(option);
var c = chart.getChart();
c.on(echarts.config.EVENT.LEGEND_SELECTED, legendSelectedFun);
var chartPanel = new ht.widget.Panel({
title: title,
restoreToolTip: "Overview",
width: width,
contentHeight: height,
narrowWhenCollapse: true,
content: chart,
expanded: true
chartPanel.setPositionRelativeTo("rightBottom");
chartPanel.setPosition(0, 0);
chartPanel.getView().style.margin = '10px';
document.body.appendChild(chartPanel.getView());
首先定义了ht.Chart类,并实现了validateImpl方法,方法中处理的逻辑也很简单:在每次方法执行的时候调用图表的reset方法重新设定图标的展示大小,如果该方法是第一次执行的话,就调用图表的restore方法将图表还原为最原始的状态。会有这样的设计是因为ht.Chart类中的view是动态创建的,在没有添加到dom之前将一直存在于内存中,在内存中因为并没有浏览器宽高信息,所以div的实际宽高均为0,因此chart将option内容绘制在宽高为0的div中,即使你resize了chart,如果没用重置图表状态的话,图表状态将无法在图表上正常显示。
接下来就是创建panel图表组件了,这是的Panel组件的基本用法,其中content属性的值可以是HT for Web的任何组件或div元素,如果是HT fro Web组件的话,该组件必须实现了validateImpl方法,因为在panel的属性变化后将会调用content对应组件的validateImpl方法来重新布局组件内容。
4.ECharts和的交互:
legendSelectedFun = function(param) {
if(chart._legendSelect){
delete chart._legendS
var id = nodeMap[param.target],
dm = graphView.dm(),
data = dm.getDataById(id),
sm = dm.sm(),
selection = sm.getSelection();
if(param.selected[param.target]) {
sm.appendSelection([data]);
if(selectionData.indexOf(param.target) & 0){
selectionData.push(param.target);
sm.removeSelection([data]);
var index = selectionData.indexOf(param.target);
if(index &= 0){
selectionData.splice(index, 1);
sm.setSelection(selection.toArray());
graphView.mi(function(e){
(e.kind, e.data);
var c = chart.getChart(),
legend = c.component.legend,
selectedMap = legend.getSelectedMap();
if(e.kind === 'endRectSelect'){
chart._legendSelect =
for(var name in notes){
legend.setSelected(name, false);
notes = {};
graphView.dm().sm().each(function(data){
var note = data.s('note');
notes[note] = 1;
for(var name in notes){
legend.setSelected(name, true);
} else if(e.kind === 'clickData'){
chart._legendSelect =
var data = e.
if(data instanceof ht.Node){
var note = data.s('note');
var selected = legend.isSelected(note);
if(selected){
graphView.dm().sm().removeSelection([data]);
legend.setSelected(note, !selected);
legendSelectedFun函数是EChart图表的legend插件选中事件监听,其中处理的逻辑是:当legend插件中的某个节点被选中了,也选中在拓扑图中对应的节点,当取消选中是,也取消选中GraphView拓扑图中对应的节点。
在GraphView中添加交互监听,如果在GraphView中做了框选操作,在框选结束后,将原本legend插件上被选中的节点取消选中,然后再获取被选中节点,并在legend插件上选中对应节点;当GraphView上的节点被选中,则根据legend插件中对应节点选中情况来决定legend插件中的节点和graphView上的节点是否选中。
在GraphView交互中,我往chart实例中添加了_legendSelect变量,该变量的设定是为了阻止在GraphView交互中修改legend插件的节点属性后回调legendSelectedFun回调函数做修改GraphView中节点属性操作。
今天就写到这吧,希望这篇文章能够帮到那些有地图、、图表相结合需求的朋友,在设计上可能想法还不够成熟,希望大家不吝赐教。

我要回帖

更多关于 如何求逆拓扑排序 的文章

 

随机推荐