• OpenLayers3基础教程——OL3 介绍control


    概述:

    本文讲述的是Ol3中的control的介绍和应用。


    OL2和OL3 control比較:

    相比較Ol2的control,OL3显得特别少,下图分别为Ol2和Ol3的control:


    Ol2的control


    Ol3的control

    相比較Ol2,OL3保留了mouseposition。scaleline。zoom。zoomslider,而将非常多东西比如draw等转移到了interaction以下。下图为Ol3的interaction:


    OL3中control的经常使用操作:

    Ol3中control的经常使用操作包含获取control集,加入,删除。

    获取control集

    var controls = map.getControls();

    加入

    map.addControl(ctrl);

    删除

    map.removeControl(ctrl);

    OL3加入control演示样例:

    以下是一个比較完毕的OL3的Control的演示样例,

    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    	<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    	<title>control</title>
    	<link rel="stylesheet" type="text/css" href="http://localhost/ol3/css/ol.css"/>
    	<style type="text/css">
    		body, #map {
    			border: 0px;
    			margin: 0px;
    			padding: 0px;
    			 100%;
    			height: 100%;
    			font-size: 13px;
    		}
    		#location{
    			position: absolute;
    			bottom: 10px;
    			left: 45%;
    			font-weight: bold;
    			z-index: 99;
    		}
    		#switch{
    			position:absolute;
    			right:20pt;
    			top:40pt;
    			z-index:999;
    		}
    		#rotation{
    			position: absolute;
    			top: 10px;
    			left: 45%;
    			font-weight: bold;
    			z-index: 99;
    		}
    		.ol-zoomslider{
    			background: #d0e5f5;
    			 20px;
    		}
    		.zoom-to-extent{
    			position: absolute;
    			top: 5pt;
    			left: 28pt;
    		}
    		.map-rotate{
    			position: absolute;
    			top: 5pt;
    			left: 45%;
    		}
    	</style>
    	<script type="text/javascript" src="http://localhost/ol3/build/ol.js"></script>
    	<script type="text/javascript" src="http://localhost/jquery/jquery-1.8.3.js"></script>
    	<script type="text/javascript">
    		function init(){
    			var format = 'image/png';
    			var bounds = [73.4510046356223, 18.1632471876417,
    				134.976797646506, 53.5319431522236];
    			var controls = new Array();
    			//鼠标位置
    			var mousePositionControl = new ol.control.MousePosition({
    				className: 'custom-mouse-position',
    				target: document.getElementById('location'),
    				coordinateFormat: ol.coordinate.createStringXY(5),//保留5位小数
    				undefinedHTML: ' '
    			});
    			controls.push(mousePositionControl);
    
    			//缩放至范围
    			var zoomToExtentControl = new ol.control.ZoomToExtent({
    				extent: bounds,
    				className: 'zoom-to-extent',
    				tipLabel:"全图"
    			});
    			controls.push(zoomToExtentControl);
    
    			//比例尺
    			var scaleLineControl = new ol.control.ScaleLine({});
    			controls.push(scaleLineControl);
    
    			//全图
    			var fullScreenControl = new ol.control.FullScreen({});
    			controls.push(fullScreenControl);
    
    			//缩放控件
    			var zoomSliderControl = new ol.control.ZoomSlider({});
    			controls.push(zoomSliderControl);
    
    			var rotate = new ol.control.Rotate({
    //				label:"↑",
    				tipLabel:"重置",
    				target:document.getElementById('rotation'),
    				autoHide:false
    			});
    			controls.push(rotate);
    
    			var untiled = new ol.layer.Image({
    				source: new ol.source.ImageWMS({
    					ratio: 1,
    					url: 'http://localhost:8081/geoserver/lzugis/wms',
    					params: {'FORMAT': format,
    						'VERSION': '1.1.1',
    						LAYERS: 'lzugis:province',
    						STYLES: ''
    					}
    				})
    			});
    			var projection = new ol.proj.Projection({
    				code: 'EPSG:4326',
    				units: 'degrees'
    			});
    			var map = new ol.Map({
    				controls: ol.control.defaults({
    					attribution: false
    				}).extend(controls),
    				interactions: ol.interaction.defaults().extend([
    					new ol.interaction.DragRotateAndZoom()
    				]),
    				target: 'map',
    				layers: [
    					untiled
    				],
    				view: new ol.View({
    					projection: projection,
    					rotation:-45
    				})
    			});
    			map.getView().fitExtent(bounds, map.getSize());
    
    			$("#setRotate").on("click",function(){
    				var angle = $("#rotate").val();
    				map.getView().setRotation(angle);
    			});
    		}
    	</script>
    </head>
    <body onLoad="init()">
    <div class="layer-change-switch" id="switch">
    	<div id="slider">
    		<input id="rotate" type="text" value="-45" maxlength="10" style=" 50px;" /><button id="setRotate">旋转</button>
    	</div>
    </div>
    <div id="map">
    	<div id="rotation"></div>
    	<div id="location"></div>
    </div>
    </body>
    </html>

    上述代码效果例如以下:



    相关课程:

    OpenLayers3基础教程——OL3基本概念

    OpenLayers3基础教程——载入资源




  • 相关阅读:
    bzoj4325: NOIP2015 斗地主(爆搜+模拟)
    bzoj3631: [JLOI2014]松鼠的新家(LCA+差分)
    bzoj3555: [Ctsc2014]企鹅QQ (Hash)
    bzoj1455: 罗马游戏 + bzoj2809: Dispatching(可并堆)
    bzoj1510: [POI2006]Kra-The Disks(单调栈)
    bzoj3380: [Usaco2004 Open]Cave Cows 1 洞穴里的牛之一(spfa+状压DP)
    bzoj3048+3049+3050
    bzoj3083 遥远的国度 && bzoj3626 LCA (树链剖分)
    bzoj1745: [Usaco2005 oct]Flying Right 飞行航班(贪心+map)
    bzoj1724: [Usaco2006 Nov]Fence Repair 切割木板(贪心+堆)
  • 原文地址:https://www.cnblogs.com/zhchoutai/p/6944733.html
Copyright © 2020-2023  润新知