在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
在地图div上添加一个按钮,单击按钮后弹出一个弹出层,在弹出层的输入框内输入数据后点击提交按钮将数据提交至数据库。 mytest_map.jsp的代码如下: 复制代码 代码如下: <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3c.org/TR/1999/REC-html401-19991224/loose.dtd"> <html lang='zh-cn' xmlns="http://www.w3.org/1999/xhtml"> <head> <meta charset='utf-8' /> <title>My OpenLayers Map</title> <link rel="stylesheet" type="text/css" href="openlayers/theme/default/style.css"/> <style type="text/css"> #map { clear: both; position: relative; width: 1000px; height: 600px; border: 1px solid black; } #operator { position: absolute; top:10px; left:40px; z-index: 3000; } #popDiv { position: absolute; visibility: hidden; overflow: hidden; border: 2px solid #AEBBCA; background-color: #EEF1F8; cursor: move; padding: 1px; z-index:4000; } #popTitle { background: #9DACBF; height: 20px; line-height: 20px; padding: 1px; } #popForm { padding: 2px; padding-left: 15px; } .title_left { font-weight: bold; padding-left: 5px; float: left; } .title_right { float: right; } #popTitle .title_right a { color: #000; text-decoration: none; } #popTitle .title_right a:hover { text-decoration: underline; color: #FF0000; } </style> <script type='text/javascript' src='openlayers/OpenLayers.js'></script> <script type='text/javascript'> function init() { format = 'image/png'; var bounds = new OpenLayers.Bounds( 121.120606, 28.169589, 121.871688, 28.525587 ); var options = { controls: [], maxExtent: bounds, maxResolution: 0.0013726171875, projection: "EPSG:4326", units: 'degrees' }; map = new OpenLayers.Map('map', options); //基础图层,可以用一个图层组做基础图层 var baselayer = new OpenLayers.Layer.WMS( "底图", "http://localhost:8080/geoserver/WenLing/wms", { layers:'WenLing:xianjie_region', format:format, }, { isBaseLayer:true,//设置本层为基底图层 yx : {'EPSG:4326' : true} } ); //县界 var xianjie = new OpenLayers.Layer.WMS( "县界", "http://localhost:8080/geoserver/WenLing/wms", { layers: 'WenLing:xianjie_region', transparent:true, //设置从服务器返回的地图图像是透明的 format: format }, { displayInLayerSwitcher:false, //使该图层不显示在switcher中 //minScale:xxx , //只有达到一定缩放比例该图层时才显示 opacity:0.5 //设置客户端图层半透明 } ); //水系 var waters = new OpenLayers.Layer.WMS( "水系", "http://localhost:8080/geoserver/WenLing/wms", { layers: 'WenLing:shuixi_region', transparent:true, format: format }, { opacity:1 //设置客户端图层不透明 } ); //岛屿 var islands = new OpenLayers.Layer.WMS( "岛", "http://localhost:8080/geoserver/WenLing/wms", { layers: 'WenLing:dao_region', transparent:true, format: format }, { opacity:0.5 } ); //铁路 var tielu = new OpenLayers.Layer.WMS( "铁路", "http://localhost:8080/geoserver/WenLing/wms", { layers: 'WenLing:tielu_polyline', transparent:true, format: format }, { transitionEffect:"resize", //使该图层放大或缩小时产生调整大小的动画 opacity:0.5 } ); //县 var xian = new OpenLayers.Layer.WMS( "县", "http://localhost:8080/geoserver/WenLing/wms", { layers: 'WenLing:xian_point', transparent:true, format: format }, { //minScale:xxx , //只有达到一定缩放比例该图层时才显示 opacity:0.5 } ); //变电站 biandianzhan = new OpenLayers.Layer.WMS( "变电站", "http://localhost:8080/geoserver/WenLing/wms", { layers: 'WenLing:biandianzhan_point', transparent:true, format: format }, { opacity:0.5 } ); guangxianwang = new OpenLayers.Layer.WMS( "光纤网", "http://localhost:8080/geoserver/WenLing/wms", { layers: 'WenLing:guangxianwang_polyline', transparent:true, format: format }, { transitionEffect:"resize", //使该图层放大或缩小时产生调整大小的动画 opacity:0.5 } ); map.addLayers([baselayer, xianjie, waters, islands, tielu, xian, biandianzhan, guangxianwang]); map.setCenter(map.getCenter());//设置地图中心点 map.addControl(new OpenLayers.Control.PanZoomBar({ position: new OpenLayers.Pixel(2, 15) })); map.addControl(new OpenLayers.Control.Navigation()); map.addControl(new OpenLayers.Control.LayerSwitcher()); map.addControl(new OpenLayers.Control.Scale($('scale'))); map.addControl(new OpenLayers.Control.MousePosition()); map.zoomToExtent(bounds); if (!map.getCenter()) { map.zoomToMaxExtent(); } } function showPopup() {//弹出层 var objDiv = document.getElementById("popDiv"); objDiv.style.top = "50px";//设置弹出层距离上边界的距离 objDiv.style.left = "200px";//设置弹出层距离左边界的距离 objDiv.style.width = "300px";//设置弹出层的宽度 objDiv.style.height = "220px";//设置弹出层的高度 //objDiv.style.display = "block"; objDiv.style.visibility = "visible"; } function hidePopup() {//关闭层 var objDiv = document.getElementById("popDiv"); objDiv.style.visibility = "hidden"; } </script> </head> <body onload='init();'> <div id='map'> <div id="operator"><!--按钮所在div--> <input name="" type="button" onclick="showPopup()" value="操作" /> </div> <div id="popDiv"><!--弹出层--> <div id="popTitle"> <!-- 标题div --> <span class="title_left">修改操作</span> <span class="title_right"> <a href="#" onclick="hidePopup();">关闭</a> </span> </div> <div id="popForm"> <!-- 表单div --> <form action="insert_map.jsp" method="post"> <p> ID :<input type="text" name="id" value="0" /> </br> 名 称 :<input type="text" name="name" value="aaa" /> </br> 电压等级 :<input type="text" name="voltage_level" value="110kv" /> </br> 经 度 :<input type="text" name="lon" value="121." /> </br> 纬 度 :<input type="text" name="lat" value="28." /> </br> </p> <input type="submit" value="提交" /> <input type="reset" value="重置" /> <input type="reset" value="取消" onclick="hidePopup()" /> </form> </div> </div> </div> <script type="text/javascript"> /*-------------------------鼠标左键拖动---------------------*/ /*--------当不需要实现此功能时,可以将这一部分代码删除------------*/ var objDiv = document.getElementById("popDiv"); var isIE = document.all ? true : false;//判断浏览器类型 document.onmousedown = function(evnt) {//当鼠标左键按下后执行此函数 var evnt = evnt ? evnt : event; if (evnt.button == (document.all ? 1 : 0)) { mouseD = true;//mouseD为鼠标左键状态标志,为true时表示左键被按下 } } objDiv.onmousedown = function(evnt) { objDrag = this;//objDrag为拖动的对象 var evnt = evnt ? evnt : event; if (evnt.button == (document.all ? 1 : 0)) { mx = evnt.clientX; my = evnt.clientY; objDiv.style.left = objDiv.offsetLeft + "px"; objDiv.style.top = objDiv.offsetTop + "px"; if (isIE) { objDiv.setCapture(); //objDiv.filters.alpha.opacity = 50;//当鼠标按下后透明度改变 } else { window.captureEvents(Event.MOUSEMOVE);//捕获鼠标拖动事件 //objDiv.style.opacity = 0.5;//当鼠标按下后透明度改变 } } } document.onmouseup = function() { mouseD = false;//左键松开 objDrag = ""; if (isIE) { objDiv.releaseCapture(); //objDiv.filters.alpha.opacity = 100;//当鼠标左键松开后透明度改变 } else { window.releaseEvents(objDiv.MOUSEMOVE);//释放鼠标拖动事件 //objDiv.style.opacity = 1;//当鼠标左键松开后透明度改变 } } document.onmousemove = function(evnt) { var evnt = evnt ? evnt : event; if (mouseD == true && objDrag) { var mrx = evnt.clientX - mx; var mry = evnt.clientY - my; objDiv.style.left = parseInt(objDiv.style.left) + mrx + "px"; objDiv.style.top = parseInt(objDiv.style.top) + mry + "px"; mx = evnt.clientX; my = evnt.clientY; } } </script> </body> </html> 在浏览器输入:http://localhost:8080/myapp/mytestMap.html 访问到mytestMap.jsp页面,单击左上角的“操作”按钮,结果如下: 在输入框中输入测试数据,点击提交,将会提交至insert_map.jsp页面,并在insert_map.jsp页面上显示出数据库中所有的点(包括刚刚添加的这个点),效果如下图: 再次在浏览器中访问地图页面,可以看到地图上已经多出了刚刚添加的那个点,如下图: 至此,基本操作算是完成。 后续需要做的工作有: 1,使点击提交后仍然显示在当前页面,且对地图进行刷新。 2,完善delete功能、修改功能 3,点击“操作”按钮后可以选择添加、删除或修改。 |
请发表评论