<!DOCTYPE html> <html> <head> <meta charset='UTF-8' /> <meta name='viewport' content='initial-scale=1,maximum-scale=1,user-scalable=no' /> <link href='http://bigemap.com:9000/bigemap-gl.js/v1.1.0/Widgets/widgets.css' rel='stylesheet' /> <script src='http://bigemap.com:9000/bigemap-gl.js/v1.1.0/bigemap-gl.js'></script> <style> body { margin: 0; padding: 0; } #container { position: absolute; top: 0; bottom: 0; width: 100%; } .bmgl-widget-credits { display: none } </style> <title>part_test</title> </head> <body> <div id='container'></div> <script> bmgl.Config.HTTP_URL = 'http://bigemap.com:9000'; var viewer = new bmgl.Viewer('container', { mapId: 'bigemap.zhongkexingtu', requestRenderMode: false, }); var lat = 30.598026044; var lon = 114.302312702; viewer.scene.globe.depthTestAgainstTerrain = true; //取消双击事件 viewer.BMWidget.screenSpaceEventHandler.removeInputAction(bmgl.ScreenSpaceEventType.LEFT_DOUBLE_CLICK); //设置homebutton的位置 bmgl.Camera.DEFAULT_VIEW_RECTANGLE = bmgl.Rectangle.fromDegrees(lon - 1, lat - 1, lon + 1, lat + 1); /* 流纹纹理线 color 颜色 duration 持续时间 毫秒 */ function PolylineTrailLinkMaterialProperty(color, duration) { this._definitionChanged = new bmgl.Event(); this._color = undefined; this._colorSubscription = undefined; this.color = color; this.duration = duration; this._time = (new Date()).getTime(); } bmgl.defineProperties(PolylineTrailLinkMaterialProperty.prototype, { isConstant: { get: function () { return false; } }, definitionChanged: { get: function () { return this._definitionChanged; } }, color: bmgl.createPropertyDescriptor('color') }); PolylineTrailLinkMaterialProperty.prototype.getType = function (time) { return 'PolylineTrailLink'; } PolylineTrailLinkMaterialProperty.prototype.getValue = function (time, result) { if (!bmgl.defined(result)) { result = {}; } result.color = bmgl.Property.getValueOrClonedDefault(this._color, time, bmgl.Color.WHITE, result.color); result.image = bmgl.Material.PolylineTrailLinkImage; result.time = (((new Date()).getTime() - this._time) % this.duration) / this.duration; return result; } PolylineTrailLinkMaterialProperty.prototype.equals = function (other) { return this === other || (other instanceof PolylineTrailLinkMaterialProperty && bmgl.Property.equals(this._color, other._color)) } bmgl.PolylineTrailLinkMaterialProperty = PolylineTrailLinkMaterialProperty; bmgl.Material.PolylineTrailLinkType = 'PolylineTrailLink'; bmgl.Material.PolylineTrailLinkImage = "/bmgl/images/ld4.png"; bmgl.Material.PolylineTrailLinkSource = "czm_material czm_getMaterial(czm_materialInput materialInput)\n\ {\n\ czm_material material = czm_getDefaultMaterial(materialInput);\n\ // vec2 st = materialInput.st;\n\ vec2 st = materialInput.st*repeat;\n\ vec4 colorImage = texture2D(image, vec2(fract(st.s - time), st.t));\n\ material.alpha = colorImage.a * color.a;\n\ material.diffuse = (colorImage.rgb+color.rgb)/2.0;\n\ return material;\n\ }" bmgl.Material._materialCache.addMaterial(bmgl.Material.PolylineTrailLinkType, { fabric: { type: bmgl.Material.PolylineTrailLinkType, uniforms: { color: new bmgl.Color(1.0, 0.0, 0.0, 0.5), // X 可以动态调整图片需要重复的次数 repeat: { x: 5000, y: 2 }, image: bmgl.Material.PolylineTrailLinkImage, time: 100, }, source: bmgl.Material.PolylineTrailLinkSource }, translucent: function (material) { return true; } }); //10000 是材质的持续时间 可以调整看看效果 var material = new bmgl.PolylineTrailLinkMaterialProperty(bmgl.Color.RED, 1000); function computeCircle(radius) { var positions = []; for (var i = 0; i < 360; i += 30) { var radians = bmgl.Math.toRadians(i); positions.push( new bmgl.Cartesian2( radius * Math.cos(radians), radius * Math.sin(radians) ) ); } return positions; } // var redTube = viewer.entities.add({ // polylineVolume: { // positions: bmgl.Cartesian3.fromDegreesArray([ // -85.0, // 32.0, // -85.0, // 36.0, // -89.0, // 36.0, // -91.0, // 30.0, // ]), // shape: computeCircle(3000.0), // material: material, // }, // }); var redTube = viewer.entities.add({ polylineVolume: { positions: bmgl.Cartesian3.fromDegreesArray([ 104.06061172485352, 30.691622364099512, 104.06056880950928, 30.688264036271132, 104.06374454498291, 30.688337846929571, 104.06383037567137, 30.697157814291458, 104.0710186958313, 30.69704710839882, 104.07076120376585, 30.688190225556248, 104.07631874084473, 30.686400298443729, 104.08073902130127, 30.684794871670618, 104.08696174621582, 30.694390128878513, 104.09258365631104, 30.691364035337518, 104.09039497375487, 30.688190225556248, 104.0875196456909, 30.689629524317517, 104.08533096313477, 30.686289580212929, 104.09106016159056, 30.683521583179978, 104.08915042877197, 30.680661236218103, 104.08354997634888, 30.68355849032903, 104.08108234405518, 30.679849251318913, 104.07537460327147, 30.682617353621485, 104.07385110855103, 30.679959976934466, 104.0744948387146, 30.679738525576433, 104.06885147094727, 30.671396821317973, 104.0681219100952, 30.671729026853139, 104.06837940216063, 30.673832968713747, 104.05807971954346, 30.678520534030415, 104.05829429626463, 30.656446389991498, 104.05305862426756, 30.649321049788398, 104.0469217300415, 30.646662757292184, 104.0435743331909, 30.646293544221333, 104.03872489929199, 30.64422592497429, 104.0386390686035, 30.657553908665772, 104.03816699981689, 30.669182088556568, 104.03803825378418, 30.676010684831887, 104.03868198394774, 30.678483624955902, 104.04168605804443, 30.68309714995188, 104.04374599456787, 30.685422283012443, 104.04983997344969, 30.68700924644352, 104.04889583587646, 30.690662853784424, 104.04820919036865, 30.695054380615961, 104.04404640197752, 30.70158594586032, 104.04074192047118, 30.705940077083433, 104.03610706329346, 30.712065047663003, 104.04031276702881, 30.712692281732235, 104.05112743377686, 30.713725364248265, 104.05262947082518, 30.714278796758435, 104.05584812164305, 30.716935228598953, 104.06370162963867, 30.707674294968463, 104.0639591217041, 30.696751892064274, 104.06044006347656, 30.69704710839882, 104.06061172485352, 30.691142610134154, ]), shape: computeCircle(100.0), material: material }, }); viewer.zoomTo(viewer.entities); </script> </body> </html>
源码