第二十二章 绘制线路

效果

绘制线方法

绘制时打开地形监测    ak_geometry.openDeep();

/**
	 * 绘制线
	 */
    drawLine:function(){
		
		ak_geometry.openDeep();
	   // ak_clickGeometry.isclick=false;
		var  options=new Object(); 
		options.width=10;
		options.material= new Cesium.PolylineArrowMaterialProperty(Cesium.Color.YELLOW);
		
		ak_geoLine.lineInit=new geo_draw_line(options);
		ak_geoLine.lineInit.init(function(positions,lineobje){
			console.log(positions);
			 var positions2= JSON.stringify(positions);
			console.log(positions2);
			console.log(lineobje);
			console.log("我要绘制线路了  了了流量");
		})
		
 
		
		 
		 this.bindEdit();
	},

可编辑线 

/**
	 * 可编辑线
	 */
    bindEdit:function(){
		ak_clickGeometry.isclick=false;
		var $this = this;
	    this.handler = new Cesium.ScreenSpaceEventHandler(viewer.scene.canvas);
		this.handler.setInputAction(function(evt) { //单机开始绘制
			var pick = viewer.scene.pick(evt.position);
			if (Cesium.defined(pick) && pick.id) {
				if(ak_geoLine.lineInit){
					if (pick.id.objId ==ak_geoLine.lineInit.objId) {
						ak_geoLine.lineInit.startModify();
					}
				}
		 	}
		}, Cesium.ScreenSpaceEventType.LEFT_CLICK);
	},

 保存线路

/**
	 * 保存线
	 */
	save:function(){
		var name=$("#add_lineName").val();
		if(name==null || name==""){
			net_tool.errorBack("请输入名称!");
			return;
		}
		if(ak_geoLine.lineInit){
			/**
			 *  此处获取到的是线路对象的 postions  里面是  cartesian 数组
			 *   
				[{"x": -1724148.0296666122,"y": 5182166.46948858,"z": 3283359.0189363197},
				{"x": -1723892.2981769422,"y": 5182311.198769618,"z": 3283264.064529509},
				{"x": -1723945.6746077442,"y": 5182320.755785064,"z": 3283222.9408083395},
				{"x": -1723696.8432762655,"y": 5182414.105383384,"z": 3283205.8767287782},
				{"x": -1723667.6621229637,"y": 5182427.769596374,"z": 3283198.9704439114}]
			 */
			var carPositions=ak_geoLine.lineInit.getPositions();
			if(carPositions){
				console.log(JSON.stringify(carPositions))
				/*
				  此处将 cartesian 数组  转为经纬度数组  因为 数据库内需要保存经纬度的 线对象
				  [[108.40269460014451,31.183955070157023,0.4218360328451458],
				  [108.39966963722117,31.182958046746162,-0.3191885457374716],
				  [108.4001693241718,31.18251969697518,0.5603705668055604],
				  [108.39738323431557,31.182341142415112,0.31421254342048466],
				  [108.39704750721515,31.18227031055689,-0.04808978838445662]]
				*/
				var wgsPositions=cCesium.caratesianArrToLnglatArr(carPositions);
				console.log(wgsPositions);
			 	console.log(JSON.stringify(wgsPositions))
				var queryPromters = {};
			
				var geoTxt = 'LINESTRING(';
				var content = "";
				var rings = wgsPositions;
				var ls = rings.length;
				for (var i = 0; i < ls; i++) {
				    var split = rings[i];
				    content += split[0] + " " + split[1] + " " + split[2] + ","
				}
				content = content.substring(0, content.lastIndexOf(","));
				geoTxt = geoTxt + content + ')';
				console.log(geoTxt);
				
				queryPromters.name = name;
				queryPromters.geoTxt=geoTxt;
			  
				var  options=new Object();
				options.url="/manage-api/GeoLineController/save";
				options.type="post";
				options.async=true;
				options.data={"postdata": JSON.stringify(queryPromters)};
				options.errorback=akglobe_config.errBack;
				options.contentType="application/x-www-form-urlencoded";
				options.callback=function(data){
				    if (data) {
						net_tool.toastSuccess("保存成功!");
					 	ak_geoLine.getAllByNameEvent();//不定位
				    }else{
				        toastr.error(data.msg);
				    }
				};
				akglobe_config.ajaxQuery(options);
				  
		    }
		}
	},

 编辑线

/**
	 * @param {Object} object
	 * 编辑线
	 */
	updateDrawLine:function (object){
		ak_geoLine.clear();
		ak_geometry.openDeep();// 打开地形检测
		$("#btn_show_wrapper").show();  //显示保存按钮
		$("#btn_hide_wrapper").show(); 
		ak_geoLine.attrs.id=object.id;
		var options=new Object();
		options.material=  new Cesium.PolylineDashMaterialProperty({
		       color : Cesium.Color.BLUE,
		       gapColor: Cesium.Color.YELLOW
		   });
		ak_geoLine.lineInit=new geo_draw_line(options);
		ak_geoLine.lineInit.createLine(object.cartesianList);
		ak_geoLine.lineInit.startModify();
		viewer.zoomTo(ak_geoLine.lineInit.poly);
		this.locationLine(object);
		this.bindEdit();

	},

编辑线保存

/**
	 * 编辑线 保存
	 */
	update:function (){
		if(ak_geoLine.lineInit){
			var carPositions=ak_geoLine.lineInit.getPositions();
			if(carPositions){
				var wgsPositions=cCesium.caratesianArrToLnglatArr(carPositions);
				var queryPromters = {};
						
				var geoTxt = 'LINESTRING(';
				var content = "";
				var rings = wgsPositions;
				var ls = rings.length;
				for (var i = 0; i < ls; i++) {
				    var split = rings[i];
				    content += split[0] + " " + split[1] + " " + split[2] + ","
				}
				content = content.substring(0, content.lastIndexOf(","));
				geoTxt = geoTxt + content + ')';
				
				queryPromters.geoTxt=geoTxt;
				queryPromters.id=ak_geoLine.attrs.id;
		 
				var  options=new Object();
				options.url="/manage-api/GeoLineController/update";
				options.type="post";
				options.async=true;
				options.data={"postdata": JSON.stringify(queryPromters)};
				options.errorback=akglobe_config.errBack;
				options.contentType="application/x-www-form-urlencoded";
				options.callback=function(data){
				    if (data) {
						net_tool.toastSuccess("保存成功!");
						$("#btn_show_wrapper").hide();  //隐藏保存按钮
						$("#btn_hide_wrapper").hide(); 
						ak_geoLine.getAllByNameEvent();//不定位
				    }else{
				        toastr.error(data.msg);
				    }
				};
				akglobe_config.ajaxQuery(options);
				
				  
		    }
		}
		   
	},

查询线

/**
	 * 从数组中获取数据 查询
	 */
	getAllByNameEvent: function () {
	    ak_geoLine.clear();
	    ak_nav.showLoading();
	    var objs=null;
	    var self = this;
	    if(config.isRunning==false){
	        objs=bzData;
	        this.getAllByNameGoods(objs,1);
	    }else{
	        ak_geoLine.page=1;
	        ak_geoLine.getPageInfo(ak_geoLine.page);
	    }
	},
getAllByNameGoods: function (r){
	    var pageCount = r.pageCount;
	    var comlist = r.list;
	    var length = comlist.length;
	    var dom =_result;
	    $(dom).html("");
	    if(length>0){
	
	        ak_geoLine.page= r.currenPage;
	        var ht=document.body.clientHeight-185;
	        var html="";
	        html="<div id='pageid_GeoLineController' style='overflow-y:auto;overflow-x:hidden;margin-top:10px;'>";
	        html+=ak_geoLine.htmlTable(r);
	        html+="</div>"
	
	        $(dom).append(html);
	        var html2="<div id='pagebottom_GeoLineController' class=\"pageListbottom\"></div>";
	        $(dom).append(html2);
	        _slipWin.upws(400);
	        _slipWin.show();
	        writePage(ak_geoLine.page,pageCount, 3,"pagebottom_GeoLineController","ak_geoLine.getPageInfo");
	        ak_nav.hideLoading();
	    }else{
	        $(dom).html("");
	        net_tool.errorBack("暂无数据");
	    }
	
	},
htmlTable:function(r){
	    console.log(r);
	    var pageCount = r.pageCount;
	    var data = r.list;
	    var table = [];
	    if (data.length>0) {
	    	for(var i=0;i< data.length;i++){
	    		var db = data[i];
	    		var name=data[i].name;
				var perimeter=data[i].perimeter;
	    		var id=Number((new Date()).getTime() + "" + Number(Math.random() * 1000).toFixed(0));
	    		db.addtypemarker=config.addtypemarker.line;
	    		
	    		var lnglatList =[];  //经纬度数组
	    		var geoXyz=data[i].geoXyz;
	    		var xyzList=geoXyz.split(",");
	    		for(var j=0;j<xyzList.length;j++){
	    			var xyz = xyzList[j].split(" ");
	    			if(j==0){
	    				db.x=parseFloat(xyz[0]);
	    				db.y=parseFloat(xyz[1]);
	    			}
	    			var sm1=[];
	    			sm1.push(parseFloat(xyz[0]));
	    			sm1.push(parseFloat(xyz[1]));
	    			sm1.push(parseFloat(xyz[2]));
	    			lnglatList.push(sm1);
	    		}
	    		
	    		var positions = cCesium.lnglatArrToCartesianArr(lnglatList);  //经纬度转为笛卡尔坐标系
	    		
	    		if(positions){
	    			db.cartesianList=positions;//将转换后的坐标放入到对象中 在编辑的时候直接使用
	    		    var proper=new Cesium.PropertyBag(db); 
					var options=new Object();
					options.width=5;
					var lineInit=new geo_draw_line(options);
					lineInit.createLine(positions);
					lineInit.poly.properties=proper;
	    		
	    		}
	    	
	    		var jsonstr = JSON.stringify(db); //将json对象转换为json字符串
	    		
	    		table.push("<table width='100%'  height:90% ><tbody>" );
	    		
	    		table.push("<tr ><td colspan=2><input type='button' class='panel_weight_button1' style='width:120px;height:27px;margin-left: 10px;' value='"+name+"' onclick='ak_geoLine.clicklabel("+jsonstr+")' />");
	    		table.push("</td></tr>")
				table.push("<br/>");
				table.push("<tr><td>&nbsp;&nbsp;长度::&nbsp;<a style='color:white '>"+perimeter+"米</a></td></tr>");
	    		table.push("<tr><td  colspan='2'>&nbsp;&nbsp;<a  onclick='ak_geoLine.updateDrawLine("+jsonstr+")' style='color:#00FFFF;cursor:pointer;'>编辑</a> &nbsp;&nbsp;&nbsp;&nbsp;<a style='color:#00FFFF;cursor:pointer;' onclick='ak_geoLine.delete("+jsonstr+")' >删除</a>&nbsp;&nbsp;&nbsp;&nbsp;");
	    		table.push("</td></tr>")
	    		table.push("</tbody></table>");
	    		table.push("<br/>");
	    	
	    	}
	    	if(ak_geoLine.isLocation==1){  //定位
	    		viewer.zoomTo(viewer.entities);
	    	}
	    	ak_nav.hideLoading();
	        
	    }else{
	        $("#context_gwsbcx").html("");
	        net_tool.errorBack("暂无数据");
	    }
	    return table.join("");
	},

clicklabel:function(feature){
		ak_geoLine.clear();
		ak_geometry.closeDeep();
		if(feature.cartesianList){
			var material=ak_marker.getColorMaterial();
		    var proper=new Cesium.PropertyBag(feature); 
			var options=new Object();
			options.width=10;
			options.material=  material;
			var lineInit=new geo_draw_line(options);
			var db=lineInit.createLine(feature.cartesianList);
			lineInit.poly.properties=proper;
			
			this.locationLine(feature);
		
			
		}else{
			alert("不支持定位");
			return;
		}
		
	
	
	},

清除线

/**
	 * 清除
	 */
	clear:function(){
		ak_nav.clearEntines();
	},

整个代码

/*
  绘制线
 */
var ak_geoLine= {
	page:1,// 当前第几页
	pagesize:10,// 一页几行
	attrs:{},
	lineInit:null,//  线对象
	isLocation:null,  //是否定位
	lineList:null,  //线对象  用于汽泡中的保存
	
	
	showPanel:function(){
		 showCesium();
		$("#drawLine_panel").show();
		// ak_nav.clearAll(); 
		ak_geoLine.ButtonInit();
	},
	/**
	 * 加载全部
	 */
	showdth:function(){
		ak_geoLine.clear();
	    var name;
	    var remark;
	    var queryPromters={};
	    var data={ "postdata": JSON.stringify(queryPromters) };
	    var jj=0;
		
		// var data={ "postdata": JSON.stringify(queryPromters) };
		// var url= config.serverapi + "/GeoLineController/getAll";
		// net_tool.ajaxGetNetwork(url,data,ak_geoLine.showAllList,net_tool.errorBack);
		
		var options = new Object(); 
		options.url = "/manage-api/GeoLineController/getAll";
		options.type = "get";
		options.data = data;
		options.errorback = akglobe_config.errBack;
		options.callback = function(data) {
			console.log(data);
			ak_geoLine.showAllList(data); 
		}
		akglobe_config.ajaxQuery(options);
		
	
	},
	showAllList:function(data){
		var data = data.list;
		if (data.length>0) {
			for(var i=0;i< data.length;i++){
				var db = data[i];
				var name=data[i].name;
				var id=Number((new Date()).getTime() + "" + Number(Math.random() * 1000).toFixed(0));
				db.addtypemarker=config.addtypemarker.line;
				
				var lnglatList =[];  //经纬度数组
				var geoXyz=data[i].geoXyz;
				var xyzList=geoXyz.split(",");
				for(var j=0;j<xyzList.length;j++){
					var xyz = xyzList[j].split(" ");
					if(j==0){
						db.x=parseFloat(xyz[0]);
						db.y=parseFloat(xyz[1]);
					}
					var sm1=[];
					sm1.push(parseFloat(xyz[0]));
					sm1.push(parseFloat(xyz[1]));
					sm1.push(parseFloat(xyz[2]));
					lnglatList.push(sm1);
				}
				
				var positions = cCesium.lnglatArrToCartesianArr(lnglatList);  //经纬度转为笛卡尔坐标系
				
				if(positions){
					db.cartesianList=positions;//将转换后的坐标放入到对象中 在编辑的时候直接使用
					var proper=new Cesium.PropertyBag(db); 
					var options=new Object();
					options.width=5;
					var lineInit=new geo_draw_line(options);
					lineInit.createLine(positions);
					lineInit.poly.properties=proper;
				}
			
				var jsonstr = JSON.stringify(db); //将json对象转换为json字符串
			}
		    
		}
		
	},
	/**
	 * 从数组中获取数据 查询
	 */
	getAllByNameEvent: function () {
	    ak_geoLine.clear();
	    ak_nav.showLoading();
	    var objs=null;
	    var self = this;
	    if(config.isRunning==false){
	        objs=bzData;
	        this.getAllByNameGoods(objs,1);
	    }else{
	        ak_geoLine.page=1;
	        ak_geoLine.getPageInfo(ak_geoLine.page);
	    }
	},
	
	/**
	 * 分页查询
	 * @param {Object} page
	 */
	getPageInfo:function(page){
	    var objs=null;
	    var self = this;
	    if(config.isRunning==false){
	        objs=yjData;
	        this.getAllByNameGoods(objs,page);
	    }else{
			var name=$("#lineName").val();
	        var queryPromters={};
	        queryPromters.name=name;
	        queryPromters.page=page;
	        queryPromters.pagesize=ak_geoLine.pagesize;
	        var data={ "postdata": JSON.stringify(queryPromters) };
	        // var url= config.serverapi + "/GeoLineController/list";
	        // net_tool.ajaxGetNetwork(url,data,
	        //     ak_geoLine.getAllByNameGoods
	        //     ,net_tool.errorBack)
				
			var options = new Object();
			options.url = "/manage-api/GeoLineController/list";
			options.type = "get";
			options.data = data;
			options.errorback = akglobe_config.errBack;
			options.callback = function(data) {
				console.log(data);
				 ak_geoLine.getAllByNameGoods(data); 
			}
			akglobe_config.ajaxQuery(options);
	    }
	},
	htmlTable:function(r){
	    console.log(r);
	    var pageCount = r.pageCount;
	    var data = r.list;
	    var table = [];
	    if (data.length>0) {
	    	for(var i=0;i< data.length;i++){
	    		var db = data[i];
	    		var name=data[i].name;
				var perimeter=data[i].perimeter;
	    		var id=Number((new Date()).getTime() + "" + Number(Math.random() * 1000).toFixed(0));
	    		db.addtypemarker=config.addtypemarker.line;
	    		
	    		var lnglatList =[];  //经纬度数组
	    		var geoXyz=data[i].geoXyz;
	    		var xyzList=geoXyz.split(",");
	    		for(var j=0;j<xyzList.length;j++){
	    			var xyz = xyzList[j].split(" ");
	    			if(j==0){
	    				db.x=parseFloat(xyz[0]);
	    				db.y=parseFloat(xyz[1]);
	    			}
	    			var sm1=[];
	    			sm1.push(parseFloat(xyz[0]));
	    			sm1.push(parseFloat(xyz[1]));
	    			sm1.push(parseFloat(xyz[2]));
	    			lnglatList.push(sm1);
	    		}
	    		
	    		var positions = cCesium.lnglatArrToCartesianArr(lnglatList);  //经纬度转为笛卡尔坐标系
	    		
	    		if(positions){
	    			db.cartesianList=positions;//将转换后的坐标放入到对象中 在编辑的时候直接使用
	    		    var proper=new Cesium.PropertyBag(db); 
					var options=new Object();
					options.width=5;
					var lineInit=new geo_draw_line(options);
					lineInit.createLine(positions);
					lineInit.poly.properties=proper;
	    		
	    		}
	    	
	    		var jsonstr = JSON.stringify(db); //将json对象转换为json字符串
	    		
	    		table.push("<table width='100%'  height:90% ><tbody>" );
	    		
	    		table.push("<tr ><td colspan=2><input type='button' class='panel_weight_button1' style='width:120px;height:27px;margin-left: 10px;' value='"+name+"' onclick='ak_geoLine.clicklabel("+jsonstr+")' />");
	    		table.push("</td></tr>")
				table.push("<br/>");
				table.push("<tr><td>&nbsp;&nbsp;长度::&nbsp;<a style='color:white '>"+perimeter+"米</a></td></tr>");
	    		table.push("<tr><td  colspan='2'>&nbsp;&nbsp;<a  onclick='ak_geoLine.updateDrawLine("+jsonstr+")' style='color:#00FFFF;cursor:pointer;'>编辑</a> &nbsp;&nbsp;&nbsp;&nbsp;<a style='color:#00FFFF;cursor:pointer;' onclick='ak_geoLine.delete("+jsonstr+")' >删除</a>&nbsp;&nbsp;&nbsp;&nbsp;");
	    		table.push("</td></tr>")
	    		table.push("</tbody></table>");
	    		table.push("<br/>");
	    	
	    	}
	    	if(ak_geoLine.isLocation==1){  //定位
	    		viewer.zoomTo(viewer.entities);
	    	}
	    	ak_nav.hideLoading();
	        
	    }else{
	        $("#context_gwsbcx").html("");
	        net_tool.errorBack("暂无数据");
	    }
	    return table.join("");
	},
	/**
	 * @param {Object} properties
	 * @param {Object} position
	 * @param {Object} type
	 * 显示气泡  在 popu里面调用
	 */
	showPopu:function(properties,position,type){
	    if(type==1) {
	        var name = properties.name;
	        var id = properties.id;
	        var remark =properties.remark;
			var perimeter = properties.perimeter;
	        var content = '<table ><tbody>';
	        content += '<tr><td><label>名称:</label>' + name  + '</td></tr>';
			content += '<tr><td><label>长度:</label>' + perimeter  + '米</td></tr>';
	
	        content += '</tbody></table>';
	        var obj = { position: position, content: content };
			var obj = { position: position, content: content };
			ak_nav.showContent(content,250,100);
	    }else if(type==2) {
	        var info = "";
	        var name =properties.name;
	        var remark =properties.remark;
	        // info += '<div>矢量单体化</div>';
	        info += '<div>名称:' + name + '</div>';
	        geo_tooltip_div.showAt(position, info);
	    }
	},
	/**
	 * 分页回调
	 * @param {Object} r
	 */
	getAllByNameGoods: function (r){
	    var pageCount = r.pageCount;
	    var comlist = r.list;
	    var length = comlist.length;
	    var dom =_result;
	    $(dom).html("");
	    if(length>0){
	
	        ak_geoLine.page= r.currenPage;
	        var ht=document.body.clientHeight-185;
	        var html="";
	        html="<div id='pageid_GeoLineController' style='overflow-y:auto;overflow-x:hidden;margin-top:10px;'>";
	        html+=ak_geoLine.htmlTable(r);
	        html+="</div>"
	
	        $(dom).append(html);
	        var html2="<div id='pagebottom_GeoLineController' class=\"pageListbottom\"></div>";
	        $(dom).append(html2);
	        _slipWin.upws(400);
	        _slipWin.show();
	        writePage(ak_geoLine.page,pageCount, 3,"pagebottom_GeoLineController","ak_geoLine.getPageInfo");
	        ak_nav.hideLoading();
	    }else{
	        $(dom).html("");
	        net_tool.errorBack("暂无数据");
	    }
	
	},
	
	locationLine:function(feature){
		var line = viewer.entities.add({
		  polyline: {
		    positions: feature.cartesianList,
		    width: 1, // 线的宽度
		    material: Cesium.Color.WHITE.withAlpha(0.1) // 线的颜色
		  }
		});
		
		// 调整地图视图到指定的线
		viewer.zoomTo(line);
	},
	/**
	 * @param {Object} feature
	 * 定位
	 */
	clicklabel:function(feature){
		ak_geoLine.clear();
		ak_geometry.closeDeep();
		if(feature.cartesianList){
			// var cartesian=feature.cartesianList[0];
		 // 	var xy=cCesium.cartesianToLnglat(cartesian);
			//viewer.zoomTo(mak);
			var material=ak_marker.getColorMaterial();
		    var proper=new Cesium.PropertyBag(feature); 
			var options=new Object();
			options.width=10;
			options.material=  material;
			var lineInit=new geo_draw_line(options);
			var db=lineInit.createLine(feature.cartesianList);
			lineInit.poly.properties=proper;
			//lineInit.poly.polyline.material=Cesium.Color.YELLOW.withAlpha(0.8);
			// var l=lineInit.getObject();
	     	// viewer.zoomTo(lineInit.poly.polyline);
			
			this.locationLine(feature);
		
			
		//	 viewer.zoomTo(db);
			
			// viewer.camera.flyTo({
			// 	destination: Cesium.Cartesian3.fromDegrees(xy[0],xy[1], 300)
			// });
		}else{
			alert("不支持定位");
			return;
		}
		
	
	
	},

	/**
	 * 可编辑线
	 */
    bindEdit:function(){
		ak_clickGeometry.isclick=false;
		var $this = this;
	    this.handler = new Cesium.ScreenSpaceEventHandler(viewer.scene.canvas);
		this.handler.setInputAction(function(evt) { //单机开始绘制
			var pick = viewer.scene.pick(evt.position);
			if (Cesium.defined(pick) && pick.id) {
				if(ak_geoLine.lineInit){
					if (pick.id.objId ==ak_geoLine.lineInit.objId) {
						ak_geoLine.lineInit.startModify();
					}
				}
		 	}
		}, Cesium.ScreenSpaceEventType.LEFT_CLICK);
	},
	/**
	 * 绘制线
	 */
    drawLine:function(){
		
		ak_geometry.openDeep();
	   // ak_clickGeometry.isclick=false;
		var  options=new Object(); 
		options.width=10;
		options.material= new Cesium.PolylineArrowMaterialProperty(Cesium.Color.YELLOW);
		
		ak_geoLine.lineInit=new geo_draw_line(options);
		ak_geoLine.lineInit.init(function(positions,lineobje){
			console.log(positions);
			 var positions2= JSON.stringify(positions);
			console.log(positions2);
			console.log(lineobje);
			console.log("我要绘制线路了  了了流量");
		})
		
 
		
		 
		 this.bindEdit();
	},
	/**
	 * 保存线
	 */
	save:function(){
		var name=$("#add_lineName").val();
		if(name==null || name==""){
			net_tool.errorBack("请输入名称!");
			return;
		}
		if(ak_geoLine.lineInit){
			/**
			 *  此处获取到的是线路对象的 postions  里面是  cartesian 数组
			 *   
				[{"x": -1724148.0296666122,"y": 5182166.46948858,"z": 3283359.0189363197},
				{"x": -1723892.2981769422,"y": 5182311.198769618,"z": 3283264.064529509},
				{"x": -1723945.6746077442,"y": 5182320.755785064,"z": 3283222.9408083395},
				{"x": -1723696.8432762655,"y": 5182414.105383384,"z": 3283205.8767287782},
				{"x": -1723667.6621229637,"y": 5182427.769596374,"z": 3283198.9704439114}]
			 */
			var carPositions=ak_geoLine.lineInit.getPositions();
			if(carPositions){
				console.log(JSON.stringify(carPositions))
				/*
				  此处将 cartesian 数组  转为经纬度数组  因为 数据库内需要保存经纬度的 线对象
				  [[108.40269460014451,31.183955070157023,0.4218360328451458],
				  [108.39966963722117,31.182958046746162,-0.3191885457374716],
				  [108.4001693241718,31.18251969697518,0.5603705668055604],
				  [108.39738323431557,31.182341142415112,0.31421254342048466],
				  [108.39704750721515,31.18227031055689,-0.04808978838445662]]
				*/
				var wgsPositions=cCesium.caratesianArrToLnglatArr(carPositions);
				console.log(wgsPositions);
			 	console.log(JSON.stringify(wgsPositions))
				var queryPromters = {};
			
				var geoTxt = 'LINESTRING(';
				var content = "";
				var rings = wgsPositions;
				var ls = rings.length;
				for (var i = 0; i < ls; i++) {
				    var split = rings[i];
				    content += split[0] + " " + split[1] + " " + split[2] + ","
				}
				content = content.substring(0, content.lastIndexOf(","));
				geoTxt = geoTxt + content + ')';
				console.log(geoTxt);
				
				queryPromters.name = name;
				queryPromters.geoTxt=geoTxt;
			  
				var  options=new Object();
				options.url="/manage-api/GeoLineController/save";
				options.type="post";
				options.async=true;
				options.data={"postdata": JSON.stringify(queryPromters)};
				options.errorback=akglobe_config.errBack;
				options.contentType="application/x-www-form-urlencoded";
				options.callback=function(data){
				    if (data) {
						net_tool.toastSuccess("保存成功!");
					 	ak_geoLine.getAllByNameEvent();//不定位
				    }else{
				        toastr.error(data.msg);
				    }
				};
				akglobe_config.ajaxQuery(options);
				  
		    }
		}
	},
	/**
	 * @param {Object} object
	 * 编辑线
	 */
	updateDrawLine:function (object){
		ak_geoLine.clear();
		ak_geometry.openDeep();// 打开地形检测
		$("#btn_show_wrapper").show();  //显示保存按钮
		$("#btn_hide_wrapper").show(); 
		ak_geoLine.attrs.id=object.id;
		var options=new Object();
		options.material=  new Cesium.PolylineDashMaterialProperty({
		       color : Cesium.Color.BLUE,
		       gapColor: Cesium.Color.YELLOW
		   });
		ak_geoLine.lineInit=new geo_draw_line(options);
		ak_geoLine.lineInit.createLine(object.cartesianList);
		ak_geoLine.lineInit.startModify();
		viewer.zoomTo(ak_geoLine.lineInit.poly);
		this.locationLine(object);
		this.bindEdit();

	},
	/**
	 * 编辑线 保存
	 */
	update:function (){
		if(ak_geoLine.lineInit){
			var carPositions=ak_geoLine.lineInit.getPositions();
			if(carPositions){
				var wgsPositions=cCesium.caratesianArrToLnglatArr(carPositions);
				var queryPromters = {};
						
				var geoTxt = 'LINESTRING(';
				var content = "";
				var rings = wgsPositions;
				var ls = rings.length;
				for (var i = 0; i < ls; i++) {
				    var split = rings[i];
				    content += split[0] + " " + split[1] + " " + split[2] + ","
				}
				content = content.substring(0, content.lastIndexOf(","));
				geoTxt = geoTxt + content + ')';
				
				queryPromters.geoTxt=geoTxt;
				queryPromters.id=ak_geoLine.attrs.id;
		 
				var  options=new Object();
				options.url="/manage-api/GeoLineController/update";
				options.type="post";
				options.async=true;
				options.data={"postdata": JSON.stringify(queryPromters)};
				options.errorback=akglobe_config.errBack;
				options.contentType="application/x-www-form-urlencoded";
				options.callback=function(data){
				    if (data) {
						net_tool.toastSuccess("保存成功!");
						$("#btn_show_wrapper").hide();  //隐藏保存按钮
						$("#btn_hide_wrapper").hide(); 
						ak_geoLine.getAllByNameEvent();//不定位
				    }else{
				        toastr.error(data.msg);
				    }
				};
				akglobe_config.ajaxQuery(options);
				
				  
		    }
		}
		   
	},
	/**
	 * @param {Object} object
	 * 删除
	 */
	delete:function (object){
		if(object){
			var db = {};
			db.id=object.id;
			var data={"postdata": JSON.stringify(db)};
			var url= config.serverapi + "/GeoLineController/delete";
		 
			
			var  options=new Object();
			options.url="/manage-api/GeoLineController/delete";
			options.type="post";
			options.async=true;
			options.data=data;
			options.errorback=akglobe_config.errBack;
			options.callback=function(data){
			    if (data) {
					net_tool.toastSuccess("删除成功!");
					ak_geoLine.getAllByNameEvent();//不定位
			    }else{
			        toastr.error(data.msg);
			    }
			};
			akglobe_config.ajaxQuery(options);
			
		} 
	},
	/**
	 * 编辑的保存
	 */
	ButtonInit:function () {
		$("#div_btn_save").click(function () {
		    ak_geoLine.update(ak_geoLine.lineList);
		    ak_geoLine.destroy();
		});
		$("#btn-div_hide").click(function () {
			$("#btn_show_wrapper").hide();
			$("#btn_hide_wrapper").hide(); 
		    ak_geoLine.clearAll();
		});
	},
	/**
	 * 清除
	 */
	clear:function(){
		ak_nav.clearEntines();
	},
	destroy:function(){
		if(ak_geoLine.handler){
			ak_geoLine.handler.destroy();
			ak_geoLine.handler = null;
		}
	},
	clearAll:function(){
		ak_geoLine.clear();
		ak_geoLine.destroy();
	}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

akglobe

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值