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 + -
显示快捷键?