"use script"; //开发环境建议开启严格模式
|
(function (window, mars3d) {
|
//创建widget类,需要继承BaseWidget
|
class MyWidget extends mars3d.widget.BaseWidget {
|
//初始化[仅执行1次]
|
create() {}
|
//打开激活
|
activate() {
|
//创建Graphic图层
|
var graphicLayer = new mars3d.layer.GraphicLayer({
|
name: this.config.name,
|
pid: 99, //图层管理 中使用,父节点id
|
});
|
this.map.addLayer(graphicLayer);
|
|
this.graphicLayer = graphicLayer;
|
|
//加一些演示数据
|
addGraphic_a1(graphicLayer);
|
addGraphic_a2(graphicLayer);
|
addGraphic_a3(graphicLayer);
|
addGraphic_a4(graphicLayer);
|
addGraphic_a5(graphicLayer);
|
addGraphic_a7(graphicLayer);
|
addGraphic_a8(graphicLayer);
|
|
this.graphicLayer.flyTo();
|
}
|
//关闭释放
|
disable() {
|
this.map.removeLayer(this.graphicLayer, true);
|
this.graphicLayer = null;
|
}
|
}
|
|
//注册到widget管理器中。
|
mars3d.widget.bindClass(MyWidget);
|
|
function addGraphic_a1(graphicLayer) {
|
var primitive = new mars3d.graphic.WallPrimitive({
|
positions: [
|
[117.153945, 31.881122, 36.4],
|
[117.168352, 31.880147, 32.6],
|
[117.178047, 31.885925, 29.25],
|
],
|
style: {
|
diffHeight: 200,
|
material: mars3d.MaterialUtil.createMaterial(mars3d.MaterialType.LineFlow, {
|
image: "img/textures/arrow.png",
|
color: Cesium.Color.YELLOW,
|
repeat: new Cesium.Cartesian2(20, 1),
|
speed: 20, //速度,建议取值范围1-100
|
}),
|
},
|
});
|
graphicLayer.addGraphic(primitive);
|
//primitive.addTo(graphicLayer) //还可以另外一种写法,看个人习惯选用,内部都一样
|
}
|
|
function addGraphic_a2(graphicLayer) {
|
var primitive = new mars3d.graphic.WallPrimitive({
|
positions: [
|
[117.208302, 31.85757],
|
[117.234234, 31.858263],
|
[117.234261, 31.833317],
|
[117.207414, 31.834541],
|
],
|
style: {
|
closure: true,
|
diffHeight: 500,
|
material: mars3d.MaterialUtil.createMaterial(mars3d.MaterialType.LineFlow, {
|
image: "img/textures/arrow.png",
|
color: Cesium.Color.CHARTREUSE,
|
repeat: new Cesium.Cartesian2(30, 1),
|
speed: 20, //速度,建议取值范围1-100
|
}),
|
},
|
});
|
graphicLayer.addGraphic(primitive);
|
//primitive.addTo(graphicLayer) //还可以另外一种写法,看个人习惯选用,内部都一样
|
|
//entity转geojson
|
var geojson = primitive.toGeoJSON();
|
console.log(geojson);
|
}
|
|
function addGraphic_a3(graphicLayer) {
|
//圆形时
|
var positions = mars3d.PolyUtil.getEllipseOuterPositions({
|
position: Cesium.Cartesian3.fromDegrees(117.276257, 31.866351, 19.57),
|
radius: 1200, //半径
|
count: 50, //共返回(count*4)个点
|
});
|
|
var primitive = new mars3d.graphic.WallPrimitive({
|
positions: positions,
|
style: {
|
diffHeight: 800,
|
closure: true,
|
material: mars3d.MaterialUtil.createMaterial(mars3d.MaterialType.LineFlow, {
|
image: "img/textures/fence.png",
|
color: Cesium.Color.fromCssColorString("#ffff00"),
|
speed: 10, //速度,建议取值范围1-100
|
axisY: true,
|
}),
|
},
|
});
|
graphicLayer.addGraphic(primitive);
|
//primitive.addTo(graphicLayer) //还可以另外一种写法,看个人习惯选用,内部都一样
|
}
|
|
function addGraphic_a4(graphicLayer) {
|
var primitive = new mars3d.graphic.WallPrimitive({
|
positions: [
|
[117.154815, 31.853495],
|
[117.181255, 31.854257],
|
[117.182284, 31.848255],
|
[117.184748, 31.840141],
|
[117.180557, 31.835556],
|
[117.180023, 31.833741],
|
[117.166846, 31.833737],
|
[117.155531, 31.833151],
|
[117.154787, 31.835978],
|
[117.151994, 31.839036],
|
[117.150691, 31.8416],
|
[117.151215, 31.844734],
|
],
|
style: {
|
closure: true,
|
diffHeight: 700,
|
material: mars3d.MaterialUtil.createMaterial(mars3d.MaterialType.LineFlow, {
|
//动画线材质
|
image: "img/textures/fence.png",
|
axisY: true,
|
color: Cesium.Color.fromCssColorString("#ff0000"),
|
image2: "img/textures/tanhao.png",
|
color2: Cesium.Color.fromCssColorString("#ffff00"),
|
speed: 10, //速度,建议取值范围1-100
|
}),
|
},
|
});
|
graphicLayer.addGraphic(primitive);
|
//primitive.addTo(graphicLayer) //还可以另外一种写法,看个人习惯选用,内部都一样
|
}
|
|
function addGraphic_a5(graphicLayer) {
|
var primitive = new mars3d.graphic.WallPrimitive({
|
positions: [
|
[117.229659, 31.908221],
|
[117.240804, 31.908175],
|
],
|
style: {
|
diffHeight: 500,
|
material: mars3d.MaterialUtil.createMaterial(mars3d.MaterialType.LineFlow, {
|
//动画线材质
|
image: "img/textures/fence.png",
|
axisY: true,
|
color: Cesium.Color.fromCssColorString("#ff0000"),
|
image2: "img/textures/tanhao.png",
|
color2: Cesium.Color.fromCssColorString("#ffff00"),
|
speed: 10, //速度,建议取值范围1-100
|
}),
|
label: {
|
text: "我是墙",
|
font_size: 18,
|
color: "#ffffff",
|
distanceDisplayCondition: true,
|
distanceDisplayCondition_far: 500000,
|
distanceDisplayCondition_near: 0,
|
},
|
},
|
});
|
graphicLayer.addGraphic(primitive);
|
//primitive.addTo(graphicLayer) //还可以另外一种写法,看个人习惯选用,内部都一样
|
}
|
|
function addGraphic_a7(graphicLayer) {
|
var primitive = new mars3d.graphic.WallPrimitive({
|
positions: [
|
[117.353776, 31.887406, 21.2],
|
[117.321028, 31.887207, 21.3],
|
[117.290341, 31.902469, 15.1],
|
],
|
style: {
|
diffHeight: 400,
|
material: mars3d.MaterialUtil.createMaterial(mars3d.MaterialType.LineFlow, {
|
image: "img/textures/arrow.png",
|
color: Cesium.Color.fromCssColorString("#00eba8"),
|
repeat: new Cesium.Cartesian2(20, 1),
|
speed: 20, //速度,建议取值范围1-100
|
}),
|
},
|
});
|
graphicLayer.addGraphic(primitive);
|
//primitive.addTo(graphicLayer) //还可以另外一种写法,看个人习惯选用,内部都一样
|
}
|
|
function addGraphic_a8(graphicLayer) {
|
//显示合肥市边界
|
$.getJSON("//data.mars3d.cn/file/geojson/areas/340100.json", function (geojson) {
|
let arr = mars3d.Util.geoJsonToGraphics(geojson); //解析geojson
|
for (let i = 0; i < arr.length; i++) {
|
let item = arr[i];
|
var primitive = new mars3d.graphic.WallPrimitive({
|
positions: item.positions,
|
style: {
|
diffHeight: 3000,
|
material: mars3d.MaterialUtil.createMaterial(mars3d.MaterialType.LineFlow, {
|
image: "img/textures/fence.png",
|
color: "#bdf700",
|
repeat: new Cesium.Cartesian2(5, 1),
|
axisY: true, //方向,true时上下,false左右
|
speed: 10, //速度,建议取值范围1-100
|
}),
|
},
|
attr: item.attr,
|
});
|
graphicLayer.addGraphic(primitive);
|
//primitive.addTo(graphicLayer) //还可以另外一种写法,看个人习惯选用,内部都一样
|
|
primitive.bindTooltip("合肥欢迎您 - 火星科技");
|
}
|
});
|
}
|
|
//每个widet之间都是直接引入到index.html中,会存在彼此命名冲突,所以闭包处理下。
|
})(window, mars3d);
|