factors.js

来自「用来在地图上做操作GIS,在地图上做标记」· JavaScript 代码 · 共 644 行 · 第 1/2 页

JS
644
字号
			
			var selectPoint = function(varresponse){
		    var lonlat = map.getLonLatFromViewPortPx(e.xy);
            var rs=varresponse.responseText;
                
		        rs=rs.replace("'","");
			    if(rs.indexOf("ADMINCODE = ")<1){// alert("no info"); 
				return ;}
				rs=rs.substr(rs.indexOf("ADMINCODE = ")+12);
				rs=rs.substr(0,6);//windows 部署tomcat
				//rs=rs.substr(0,rs.indexOf("\n"));//linux部署tomcat
				var adminCode=rs;
				rs=varresponse.responseText;
				rs=rs.substr(rs.indexOf("ADMINNAME = ")+12);
				rs=rs.substr(0,rs.indexOf("\n"));//windows 部署tomcat
				//rs=rs.substr(0,rs.indexOf("\n"));//linux部署tomcat
				var adminName=rs;
				//alert( adminCode+"yyyy"+adminName);
				var alarmLevel ="2";
				alarmLevel = document.getElementById("alarmLevel").value;

				addamartkser(adminCode,adminName,lonlat.lon,lonlat.lat);   
				//lzbmarkArea(deleteEnable, adminCode,alarmLevel);
				//alert(deleteEnable+"  "+adminCode+"  "+alarmLevel);
				
				
			}
		
			OpenLayers.loadURL(url, '', this, selectPoint, setHTML);			
			OpenLayers.Event.stop(e);
	
		});
	
	};
}
	
/*
标记地区
参数 deleteEnable 是否允许删除
		adminCode 行政区号,6位长
		alarmLevel 预警级别 1:红色警报 2:橙色警报 3:黄色警报 4:蓝色警报 5:其他警报
		alarmMsg 预警消息
*/	
function lzbmarkArea(deleteEnable, adminCode,alarmLevel,alarmMsg){
 // alert(deleteEnable +"   "+adminCode+"   "+alarmLevel+"   "+alarmMsg);
	var isSelected=0;
	var lonLatx=112;
    var lonLaty=22.5;
	var adminName="";
	if(!alarmMsg){alarmMsg=""};
	for(var i=0;i<=gdareainfo.length;i++){
		if(gdareainfo[i]==adminCode){
			lonLatx=gdareainfo[i-2];
			lonLaty=gdareainfo[i-1];
			adminName=gdareainfo[i+1];
			alert(lonLatx  +" "+lonLaty+"  "+adminName);
		}
	}
	if(adminName=="") {
		//alert('no info ');
		return;
	};
	
	
	
	for(var j = markers.markers.length-1; j >=0 ; j--){
	

	  if(adminCode == markers.markers[j].adminCode)
    {
            alert("delete");
			markers.removeMarker(markers.markers[j]);
    }
	}
	 var size = new OpenLayers.Size(50,50);
     var calculateOffset = function(size) {
  	  return new OpenLayers.Pixel(-(size.w/2), -size.h); 
  };
	var icon = new OpenLayers.Icon(getAlarmLevelImg(alarmLevel),
				null,null,null);
  // size, null, calculateOffset);				
  //var marker =new OpenLayers.Marker(map.getLonLatFromPixel(e.xy), icon);//显示到当前点中的坐标
	
	var marker =new OpenLayers.Marker(new OpenLayers.LonLat(lonLatx, lonLaty), icon);//显示到县市的中心点
	marker.adminCode=adminCode;
	marker.adminName=adminName;
	marker.showLabel=true;
	marker.labelStr="";
	//显示文本标签信息。
	marker.text = marker.adminName+"("+marker.adminCode+")";
	if(alarmMsg!="")
	{
		marker.text= marker.text+" " + alarmMsg;
	}
	//alert(marker.text);
  if(marker.text != ""){
       
	marker.icon.imageDiv.style.fontSize = "14px";
    marker.icon.imageDiv.style.color = "blue";
    //marker.icon.imageDiv.style.backgroundColor = "rgb(255, 255, 215)";
    marker.icon.imageDiv.style.whiteSpace = "nowrap";
    //marker.icon.imageDiv.style.width="100%";
    //marker.icon.imageDiv.style.height="30";
    var str = "";
    str+= "<img src='"+marker.icon.url+"' title='"+marker.text+"'"+"' title='"+marker.text+"'>";
    marker.icon.imageDiv.innerHTML = str;//imageDivStr + str;
    
  
	}

	

    this.labelStr=marker.icon.imageDiv.innerHTML;
    deleteEnable=false;
	if (deleteEnable) {
	      // alert("删除");
	       marker.events.register('click', marker, function(evt) { 
	       
		     // markers.removeMarker(this);
		  	//  OpenLayers.Event.stop(evt); 
	});
	}else{
    marker.events.register('click', marker, function(evt) { 
	//alert(" 当前状态 "+this.showLabel);
	//alert(this.icon.imageDiv.innerHTML);
  if(this.showLabel){ 
	    var str = "";
     this.showLabel=false;
	str+= "<table border=\"0\" bordercolor=\"#FF0000\">";
                str+= "<tr><td bgcolor=\"rgb(255, 255, 215)\" style=\"white-space:nowrap\">";
 str+= "<img src='"+marker.icon.url
	+"' ' height=20px width=20px alt='"+marker.text+"'"+"' title='"+marker.text+"' "
	+" />";
                str+= this.text.replace(new RegExp("\n","gm"),'<br/>');
                str+= "</td></tr>";
                str+= "</table>";    
				   
				this.icon.imageDiv.innerHTML = str;//imageDivStr + str;
			
				}else{
    var str = "";
    str+= "<img src='"+marker.icon.url	
	+"' height=20px width=20px "		
	+"' alt='"+marker.text+"'"+"' title='"+marker.text+"' "
	+" style=\"FILTER: progid:DXImageTransform.Microsoft.Alpha(opacity=0);WIDTH: 20px; POSITION: relative; HEIGHT: 20px\" /><br/>";
	
	
	
//alert('不显示label');
    this.showLabel=true;
    this.icon.imageDiv.innerHTML = str;//imageDivStr + str;
}
//alert(this.icon.imageDiv.innerHTML);
			OpenLayers.Event.stop(evt); 
		});
	}	
  markers.addMarker(marker);

}

/*
 得到所有选中的makers 的ID
*/
function getSelected(){
	var areaCodes="";
  for(var j = markers.markers.length-1; j >=0 ; j--){
		   areaCodes += markers.markers[j].adminCode + ",";
	}
	return areaCodes;
	
}

/*
根据预警级别获得对应图片
*/
function getAlarmLevelImg(level) {
	var imgName = "";
	if (level == 1) {
		imgName = "alarm_red.png";
	} else if (level == 2) {
		imgName = "alarm_orange.png";
	} else if (level == 3) {
		imgName = "alarm_yellow.png";
	} else if (level == 4) {
		imgName = "alarm_blue.png";
	} else {
		imgName = "alarm_other.png";
	}
	//alert(imgName);
	return "./images/weather/" + imgName;
}



//添加地图操作工具
  function setEditPanel(){

                editLayer = new OpenLayers.Layer.Vector("Editable");
                map.addLayer(editLayer);
                zb = new OpenLayers.Control.ZoomBox();
                
                 editPanel = new OpenLayers.Control.Panel({        
					'div':OpenLayers.Util.getElement('editPanel'),
					defaultControl: zb
                });
                editPanel.id="Panel";
                var drawOptions = {
                    handlerOptions: {
                        freehand: true
                    }
                };
                
                  var modifyOptions = {
                onModificationStart: function(feature) {
					// alert("a  "+feature.id);
					
                    OpenLayers.Console.log("start modifying", feature.id);
                },
                onModification: function(feature) {
					//alert( "b  "+feature.id);
                    OpenLayers.Console.log("modified", feature.id);
                },
                onModificationEnd: function(feature) {
				     //alert("c  " +feature.id);
					OpenLayers.Console.log("delete", feature.id);
                     //OpenLayers.Console.log("end modifying", feature.id);
                },
                onDelete: function(feature) {
				    // alert("d  "+feature.id);
                     OpenLayers.Console.log("delete", feature.id);
                }
            };

			  var circleOptions = {  
                   displayUnits: 'km',  
                   handlerOptions: {  
                       sides: 35,  
                       persist: true  
                   }  
               };  
               
               polygonControl = new OpenLayers.Control.DrawFeature(editLayer,
                                            OpenLayers.Handler.RegularPolygon,
                                            {handlerOptions: editLayer});
                                            
                var  cicle=new OpenLayers.Control.DrawFeature(editLayer,
                                            OpenLayers.Handler.Circle,
                                            {handlerOptions: editLayer});
                var modiyFeature= new OpenLayers.Control.ModifyFeature(editLayer);
                 controls = [new OpenLayers.Control.MouseDefaults(), 
					new OpenLayers.Control.ZoomBox(), 
				//new OpenLayers.Control.DrawFeature(layer, OpenLayers.Handler.Point, {'displayClass': 'olControlDrawFeaturePoint'}),

				new OpenLayers.Control.DragFeature(editLayer), 
				new OpenLayers.Control.ZoomToMaxExtent(),
				//olControlDrawFeatureItemActive
              
                polygonControl,
                cicle,
                                            
                 new OpenLayers.Control.SelectFeature(editLayer,
                 {   multiple: true
					 })];
                     
                     
                     
                     
                /*new OpenLayers.Control.SelectFeature(editLayer,
                // {   multiple: true,
				//	 onSelect: onFeatureSelect,
               //      onUnselect: onFeatureUnselect})];*/
                     

               // editPanel.defaultControl =polygonControl;
               // polygonControl.activate();
               
                 cicle.displayClass="olControlCricel";
                 modiyFeature.displayClass="olControlDrawFeature";
                editPanel.addControls(controls);
                  
                editPanel.defaultControl =controls[0];
                editPanel.activateControl(controls[0]);
                
                
                map.addControl(editPanel);


            }
            
            
           
			function onFeatureSelect(feature) {
				  popup = new OpenLayers.Popup.Anchored("chicken", 
											 feature.geometry.getBounds().getCenterLonLat(),
											 new OpenLayers.Size(250,75),
											 "<div style='font-size:.8em'>Feature: " + feature.id 
											 +"<br />Area: " + feature.geometry.getArea() 
											 + "<br />Bounds: " + feature.geometry.getBounds()
											  +"<img  src='./images/weather/alarm_blue.png'>" 
											 +"</div>",
											 null, true);
											
							  //alert(editLayer.selectedFeatures);
											
					feature.popup = popup;
					map.addPopup(popup);
					 //alert(feature.geometry.components[0]);
					setHTML("<div style='font-size:.8em'>Feature: " + feature.id 
											 +"<br />Area: " + feature.geometry.getArea() 
											 + "<br />Bounds: " + feature.geometry.getBounds()
											 +"</div>");
											 
			  }


				function onFeatureUnselect(feature) {
				     
					map.removePopup(feature.popup);
					feature.popup.destroy();
					feature.popup = null;
					setHTML("");
				}  

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?