openlayer2 加载本地图片经典例子

原文:https://i-blog.csdnimg.cn/blog_migrate/555035eef82f5a906192e07b435da84a.png

所有例子是基于OpenLayers-2.13,不多说直接上代码了,都是js代码,拷贝过去直接可以用了,路径放在OpenLayers-2.13\examples目录下即可。

本例子地图服务是本地图片发布的,只需修改38行  'data/lzk_gis.gif',  图片名即可。

[html]  view plain copy print ? 在CODE上查看代码片 派生到我的代码片
  1. <?xml version="1.0" encoding="UTF-8"?>  
  2. <!DOCTYPE HTML PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "DTD/xhtml1-strict.dtd">  
  3. <html xmlns="http://www.w3.org/1999/xhtml">  
  4.     <head>  
  5.     <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>  
  6.     <style>  
  7.         html,body {  
  8.             height: 99%;  
  9.             width: 99%;  
  10.         }  
  11.         #map {  
  12.             width: 698px;  
  13.             height: 330px;  
  14.             border: 1px solid black;  
  15.         }     
  16.                     /* General settings */  
  17.             body {  
  18.                 font-family: Verdana, Geneva, Arial, Helvetica, sans-serif;  
  19.                 font-size: small;  
  20.             }  
  21.             /* Toolbar styles */  
  22.             #toolbar {  
  23.                 position: relative;  
  24.                 padding-bottom: 0.5em;   
  25.                  
  26.             }  
  27.     </style>  
  28.     <script src="../lib/OpenLayers.js"></script>  
  29.     <script type="text/javascript">  
  30.             var map, measureControls;  
  31.             var markers;  
  32.         function init(){  
  33.             map = new OpenLayers.Map('map');  
  34.               
  35.             /**********************加载图层 开始*******************************/  
  36.             var graphic1 = new OpenLayers.Layer.Image(  
  37.                 'BinJiang City',  
  38.                 'data/lzk_gis.gif',  
  39.                 //坐标范围  
  40.                 new OpenLayers.Bounds(-180, -90, 180, 90),  
  41.                 //图片大小  
  42.                 new OpenLayers.Size(1024, 768),  
  43.                 {numZoomLevels: 3}  
  44.             );  
  45.             var graphic2 = new OpenLayers.Layer.Image(  
  46.                 'BinJiang City1',  
  47.                 'data/4_m_citylights_lg.gif',  
  48.                 //坐标范围  
  49.                 new OpenLayers.Bounds(-180, -90, 180, 90),  
  50.                 //图片大小  
  51.                 new OpenLayers.Size(1024, 768),  
  52.                 {numZoomLevels: 3}  
  53.             );  
  54.             //graphic2.setVisibility(false); //设置为不显示  
  55.   
  56.             map.addLayers([graphic1,graphic2]);  
  57.   
  58.             //map.setCenter(new OpenLayers.LonLat(90, 10), 0);  
  59.   
  60.             // 注册map点击事件  
  61.             map.events.register("click", map, onMapClick);  
  62.             // 注册map点击事件  
  63.             map.events.register("zoomend", map, onMapZoom);  
  64.   
  65.             // 放大到全屏  
  66.             map.zoomToMaxExtent();  
  67.               
  68.             //map.addControl(new OpenLayers.Control.LayerSwitcher());  
  69.             //map.addControl(new OpenLayers.Control.MousePosition());  
  70.             /********************END 加载图层*********************************/  
  71.   
  72.   
  73.             /************************加载一般的基础控件********************************/     
  74.                 map.addControl(new OpenLayers.Control.PanZoomBar({  //添加平移缩放工具条  
  75.                     position: new OpenLayers.Pixel(2, 6)  
  76.                 }));  
  77.                 //map.addControl(new OpenLayers.Control.Navigation());  //双击放大,平移  
  78.                 //map.addControl(new OpenLayers.Control.Scale($('scale')));  //获取地图比例尺  
  79.                // map.addControl(new OpenLayers.Control.MousePosition({element: $('location')}));  //获取鼠标的经纬度  
  80.                 //map.setCenter(new OpenLayers.LonLat(100.254, 35.25), 1);  //添加平移缩放工具条  
  81.                 //map.addControl(new OpenLayers.Control.OverviewMap());  //添加鹰眼图  
  82.                 //map.addControl(new OpenLayers.Control.LayerSwitcher({'ascending':false}));  //图层切换工具            
  83.                // map.addControl(new OpenLayers.Control.Permalink('xxxx'));  //添加永久链接  
  84.                 //map.addControl(new OpenLayers.Control.MouseToolbar());  
  85.   
  86.                 //map.zoomToMaxExtent();  
  87.                 //var zb=new OpenLayers.Control.ZoomBox({out:true});  
  88.                 //var panel = new OpenLayers.Control.Panel({defaultControl: zb});  
  89.                 //map.addControl(panel);  
  90.              /************END************加载一般的基础控件********************************/   
  91.                   
  92.             /*****************************测距、面积Start***************************/  
  93.           
  94.               
  95.             // style the sketch fancy  
  96.             var sketchSymbolizers = {  
  97.                 "Point": {  
  98.                     pointRadius: 4,  
  99.                     graphicName: "square",  
  100.                     fillColor: "white",  
  101.                     fillOpacity: 1,  
  102.                     strokeWidth: 1,  
  103.                     strokeOpacity: 1,  
  104.                     strokeColor: "#333333"  
  105.                 },  
  106.                 "Line": {  
  107.                     strokeWidth: 3,  
  108.                     strokeOpacity: 1,  
  109.                     strokeColor: "#ffffff",  
  110.                     strokeDashstyle: "dash"  
  111.                 },  
  112.                 "Polygon": {  
  113.                     strokeWidth: 2,  
  114.                     strokeOpacity: 1,  
  115.                     strokeColor: "#ffffff",  
  116.                     fillColor: "white",  
  117.                     fillOpacity: 0.3  
  118.                 }  
  119.             };  
  120.             var style = new OpenLayers.Style();  
  121.             style.addRules([  
  122.                 new OpenLayers.Rule({symbolizer: sketchSymbolizers})  
  123.             ]);  
  124.             var styleMap = new OpenLayers.StyleMap({"default": style});  
  125.               
  126.             // allow testing of specific renderers via "?renderer=Canvas", etc  
  127.             var renderer = OpenLayers.Util.getParameters(window.location.href).renderer;  
  128.             renderer = (renderer) ? [renderer] : OpenLayers.Layer.Vector.prototype.renderers;  
  129.   
  130.             measureControls = {  
  131.                 line: new OpenLayers.Control.Measure(  
  132.                     OpenLayers.Handler.Path, {  
  133.                         persist: true,  
  134.                         handlerOptions: {  
  135.                             layerOptions: {  
  136.                                 renderers: renderer,  
  137.                                 styleMap: styleMap  
  138.                             }  
  139.                         }  
  140.                     }  
  141.                 ),  
  142.                 polygon: new OpenLayers.Control.Measure(  
  143.                     OpenLayers.Handler.Polygon, {  
  144.                         persist: true,  
  145.                         handlerOptions: {  
  146.                             layerOptions: {  
  147.                                 renderers: renderer,  
  148.                                 styleMap: styleMap  
  149.                             }  
  150.                         }  
  151.                     }  
  152.                 )  
  153.             };  
  154.               
  155.             var control;  
  156.             for(var key in measureControls) {  
  157.                 control = measureControls[key];  
  158.                 control.events.on({  
  159.                     "measure": handleMeasurements,  
  160.                     "measurepartial": handleMeasurements  
  161.                 });  
  162.                 map.addControl(control);  
  163.             }  
  164.               
  165.             //map.setCenter(new OpenLayers.LonLat(0, 0), 3);  
  166.           
  167.         /**************************测距、面积End***************************/  
  168.               
  169.   
  170.             /**************************添加图片标注Start***************************/  
  171.             markers = new OpenLayers.Layer.Markers( "Markers" );  
  172.             map.addLayer(markers);  
  173.   
  174.             var size = new OpenLayers.Size(21,25);  
  175.             var offset = new OpenLayers.Pixel(-(size.w/2), -size.h);  
  176.             var icon = new OpenLayers.Icon('./img/mobile-loc.png',size,offset);  
  177.             markers.addMarker(new OpenLayers.Marker(new OpenLayers.LonLat(88,46),icon));  
  178.               
  179.             var halfIcon = icon.clone();      
  180.             markers.addMarker(new OpenLayers.Marker(new OpenLayers.LonLat(46,45),halfIcon));  
  181.             halfIcon.setOpacity(0.5);  
  182.   
  183.             marker = new OpenLayers.Marker(new OpenLayers.LonLat(90,10),icon.clone());  
  184.             marker.setOpacity(0.2);  
  185.             //鼠标点击事件  
  186.             marker.events.register('mousedown', marker, function(evt) { alert(this.icon.url); OpenLayers.Event.stop(evt); });  
  187.             markers.addMarker(marker);   
  188.             //map.addControl(new OpenLayers.Control.LayerSwitcher());  
  189.             //map.zoomToMaxExtent();  
  190.               
  191.             //鼠标悬浮到图标上的事件  
  192.             var companyname="白马湖",renshu=502;  
  193.             marker.events.register("mouseover", marker, function(evt){  
  194.              var html="<b>  "+companyname+"<br>  当前人数:"+renshu+"人</b>";  
  195.              popup1=new OpenLayers.Popup("popup1",  
  196.                                 new OpenLayers.LonLat(90,10),  
  197.                                 new OpenLayers.Size(200,50),  
  198.                                 html,  
  199.                                 false);  
  200.              popup1.setBackgroundColor("#ffffff");  
  201.              popup1.setOpacity(12);  
  202.              popup1.setBorder("1px solid #d91f12");  
  203.                 map.addPopup(popup1);  
  204.             });  
  205.             //鼠标移开事件  
  206.             marker.events.register("mouseout", marker, function(evt){  
  207.              popup1.hide();  
  208.             });  
  209.             /**************************添加图片标注End***************************/  
  210.   
  211.         //createPoint();  
  212.             //不同级别显示不同图层  
  213.             function onMapZoom(e){  
  214.             //alert('zoom level:'+map.getZoom());  
  215.             //alert('sclse:'+map.getScale());  
  216.             if(map.getZoom() == 1){     
  217.             //show some layers....   
  218.                 graphic1.setVisibility(true);  
  219.                 graphic2.setVisibility(false);  
  220.           }else if(map.getZoom() == 2){  
  221.               //hide some lyers...  
  222.                 graphic1.setVisibility(false);  
  223.                 graphic2.setVisibility(true);  
  224.           }else{  
  225.                 graphic1.setVisibility(true);  
  226.                 graphic2.setVisibility(false);  
  227.             }  
  228.             }  
  229.   
  230.         }  
  231.   
  232.         //测距、面积  
  233.         function handleMeasurements(event) {  
  234.             var geometry = event.geometry;  
  235.             var units = event.units;  
  236.             var order = event.order;  
  237.             var measure = event.measure;  
  238.             var element = document.getElementById('output');  
  239.             var out = "";  
  240.             if(order == 1) {  
  241.                 out += "measure: " + measure.toFixed(3) + " " + units;  
  242.             } else {  
  243.                 out += "measure: " + measure.toFixed(3) + " " + units + "<sup>2</" + "sup>";  
  244.             }  
  245.             element.innerHTML = out;  
  246.         }  
  247.   
  248.         function toggleControl(_value) {  
  249.             for(key in measureControls) {  
  250.                 var control = measureControls[key];  
  251.                 if(_value == key ) {  
  252.                     control.activate();  
  253.                 } else {  
  254.                     control.deactivate();  
  255.                 }  
  256.             }  
  257.         }  
  258.           
  259.   
  260.         function onMapClick(e){  
  261.             //alert('click');  
  262.             // 显示地图屏幕坐标  
  263.          var str = "[Screen]:" + e.xy.x + "," + e.xy.y;  
  264.          document.getElementById("screen_xy").innerHTML = str;  
  265.          // 屏幕坐标向地图坐标的转换  
  266.          var lonlat = map.getLonLatFromViewPortPx(e.xy);  
  267.          str = "[Map]:" + lonlat.lon + "," + lonlat.lat;  
  268.          document.getElementById("location").innerHTML = str;  
  269.          //生成点图层  
  270.            
  271.   
  272.         }  
  273.   
  274.           
  275.         function createPoint(){  
  276.         /******************************生成点图层Start***********************************/  
  277.             // Create 50 random features, and give them a "type" attribute that  
  278.             // will be used for the label text.  
  279.             var features = new Array(50);  
  280.             for (var i=0; i<features.length; i++) {  
  281.                 features[i] = new OpenLayers.Feature.Vector(  
  282.                     new OpenLayers.Geometry.Point(  
  283.                         (360 * Math.random()) - 180, (180 * Math.random()) - 90  
  284.                     ), {  
  285.                         type: 5 + parseInt(5 * Math.random())  
  286.                     }  
  287.                 );  
  288.             }  
  289.             /**  
  290.              * Create a style instance that is a collection of rules with symbolizers.  
  291.              * Use a default symbolizer to extend symoblizers for all rules.  
  292.              */  
  293.             var style = new OpenLayers.Style({  
  294.                 fillColor: "#ffcc66",  
  295.                 strokeColor: "#ff9933",  
  296.                 strokeWidth: 2,  
  297.                 label: "${type}",  
  298.                 fontColor: "#333333",  
  299.                 fontFamily: "sans-serif",  
  300.                 fontWeight: "bold"  
  301.             }, {  
  302.                 rules: [  
  303.                     new OpenLayers.Rule({  
  304.                         minScaleDenominator: 200000000,  
  305.                         symbolizer: {  
  306.                             pointRadius: 7,  
  307.                             fontSize: "9px"  
  308.                         }  
  309.                     }),  
  310.                     new OpenLayers.Rule({  
  311.                         maxScaleDenominator: 200000000,  
  312.                         minScaleDenominator: 100000000,  
  313.                         symbolizer: {  
  314.                             pointRadius: 10,  
  315.                             fontSize: "12px"  
  316.                         }  
  317.                     }),  
  318.                     new OpenLayers.Rule({  
  319.                         maxScaleDenominator: 100000000,  
  320.                         symbolizer: {  
  321.                             pointRadius: 13,  
  322.                             fontSize: "15px"  
  323.                         }  
  324.                     })  
  325.                 ]  
  326.             });  
  327.             // Create a vector layer and give it your style map.  
  328.             var points = new OpenLayers.Layer.Vector("Points", {  
  329.                 styleMap: new OpenLayers.StyleMap(style)  
  330.             });  
  331.             points.addFeatures(features);  
  332.             //map.removeLayer(points);  
  333.             map.addLayer(points);  
  334.         /******************************生成点图层End***********************************/  
  335.   
  336.         }  
  337.           
  338.         //缩小  
  339.         function zoomOut(){  
  340.             map.zoomOut();  
  341.         }  
  342.         //放大  
  343.         function zoomIn(){  
  344.             map.zoomIn();  
  345.         }  
  346.         //获取地图数据  
  347.         function getSize(){  
  348.             alert(map.getSize()+",高度为="+map.getSize().h);  
  349.         }  
  350.           
  351.         //显示标注  
  352.         var marker1;  
  353.         function addMarker(){  
  354.              var url = './img/small.jpg';  
  355.                 var sz = new OpenLayers.Size(20, 20);  //尺寸大小  
  356.                 var calculateOffset = function(size) {  
  357.                                     return new OpenLayers.Pixel(-(size.w/2), -size.h);  
  358.                                  };  
  359.                 var icon = new OpenLayers.Icon(url, sz, null, calculateOffset);  
  360.                   
  361.                 marker1 = new OpenLayers.Marker(new OpenLayers.LonLat(48,31), icon);  
  362.                 markers.addMarker(marker1);  
  363.   
  364.                // marker = new OpenLayers.Marker(madrid, icon.clone());  
  365.                // markers.addMarker(marker);              
  366.         }  
  367.          function removeMarker() {  
  368.                 markers.removeMarker(marker1);  
  369.          }  
  370.   
  371.          /*******************多边形获取经纬度坐标系*************************/  
  372.          function test(){  
  373.             var getpolygonxy = new OpenLayers.Control();  
  374.             OpenLayers.Util.extend(getpolygonxy, {  
  375.                 draw: function() {  
  376.                     this.polygonnew OpenLayers.Handler.Polygon(getpolygonxy ,  
  377.                             { "done": this.notice },{ "persist": true},  
  378.                             { keyMask: OpenLayers.Handler.MOD_SHIFT });  
  379.                     this.polygon.activate();  
  380.                 },  
  381.                 notice: function(bounds) {  
  382.                     alert(bounds);//坐标信息                      
  383.                 }  
  384.             });  
  385.             map.addControl(getpolygonxy);  
  386.          }  
  387.   
  388.   
  389.         </script>  
  390.     </head>  
  391.     <body  onload="init()">  
  392.         <div id="toolbar" style="display:">             
  393.             <input type="button" value="放大" onclick="zoomIn()"/>  
  394.             <input type="button" value="缩小" onclick="zoomOut()"/>  
  395.             <input type="button" value="获取地图大小" onclick="getSize()"/>  
  396.             <input type="button" value="平移" onclick="toggleControl('none')"/>  
  397.             <input type="button" value="线路测量" onclick="toggleControl('line')"/>  
  398.             <input type="button" value="测量面积" onclick="toggleControl('polygon')"/>  
  399.             <!--<input type="button" value="shift拉框" οnclick="boxExtend()"/>-->  
  400.             <input type="button" value="显示标注" onclick="addMarker()"/>  
  401.             <input type="button" value="移除标注" onclick="removeMarker()"/>  
  402.             <input type="button" value="画多边形获取经纬度坐标" onclick="test()"/>  
  403.         </div>  
  404.         <div id='map'></div>  
  405.           
  406.         <div id="wrapper">  
  407.             <div id="screen_xy"></div>  
  408.             <div id="location">经纬度坐标  
  409.             </div>  
  410.             <div id="scale">  
  411.             </div>  
  412.             <div id="output">  
  413.             </div>  
  414.         </div>  
  415.         <div id="xystr"></div>  
  416.         <div id="nodelist">  
  417.             <em>Click on the map to get feature info</em>  
  418.         </div>  
  419.   
  420.     </body>  
  421. </html>  

界面如下:




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值