赞
踩
- <html lang="en">
- <head>
- <meta charset="utf8">
- <link rel="stylesheet" href="./css/ol.css" type="text/css">
- <style>
- .map {
- height: 100%;
- width: 100%;
- position: relative;
- }
- #area{
- top:10px;
- right: 60px;
- height:30px;
- width:120px;
- text-align:center;
- font-weight: bold;
- display:none;
- position: fixed;
- z-index: 999;
- border-style:none;
- background-color:transparent;
- font-family: STZhongsong;
- }
- #btn{
- width:150px;
- top:10px;
- right: 300px;
- height:30px;
- background-color: #FFFFF0;
- position: fixed;
- z-index: 999;
- font-family: STZhongsong;
- }
- </style>
- <script src="./build/ol.js"></script>
- <title>OpenLayers example</title>
- </head>
- <body>
- <div id="map" class="map">
- <div>
- <input id="area" type="text" value="0万平方公里" />
- <button id="btn" type="button" onclick=show()>选择要素统计面积</button>
- </div>
- </div>
-
-
- <script type="text/javascript">
- var vector=new ol.layer.Vector({
- source:new ol.source.Vector({
- url:'./data/geojson/countries.geojson',
- format:new ol.format.GeoJSON()
- })
- });
- var tilelayer= new ol.layer.Tile({
- source: new ol.source.OSM()
- });
-
- var map = new ol.Map({
- target: 'map',
- layers: [
- tilelayer,vector
- ],
- view: new ol.View({
- projection: 'EPSG:4326',
- center:[117,42],
- zoom: 4
- })
- });
- var select=new ol.interaction.Select({
- condition:ol.events.condition.click,
- toggleCondition:ol.events.condition.click
- });
-
- var oBtn=document.getElementById("btn");
- var flag=false;
- var arr=[];
- var sum=0;
- function show(){
- flag=!flag;
- if(flag){
- oBtn.style.backgroundColor='#F0F8FF'
- document.getElementById("area").style.display="block";
- map.addInteraction(select);
- sum=0;
- document.getElementById("area").value=parseInt(sum,10)+'万平方公里';
- }
- else{
- oBtn.style.backgroundColor='#FFFFF0'
- document.getElementById("area").style.display="none";
- map.removeInteraction(select);
- select.getFeatures().clear();
- arr=[];
- sum=0;
- }
- }
-
-
- select.on('select',function(eve){
- if(eve.deselected.length>0){
- var deselectFeature=eve.deselected;
- for(var i=0;i<deselectFeature.length;i++){
- var deselectArea= deselectFeature[i].getGeometry().getArea();
- for(var i=0;i<arr.length;i++){
- if(arr[i]==deselectArea){
- arr.splice(i,1);
- console.log(arr)
- sum=0;
- }
- }
- }
- }
- else{
- var selectFeature =eve.selected;
- for(var i=0;i<selectFeature.length;i++){
- var selectArea=selectFeature[i].getGeometry().getArea();
- arr.push(selectArea);
- sum=0;
- }
- }
- for(var i=0;i<arr.length;i++){
- sum=sum+arr[i];
- }
- console.log(sum)
- document.getElementById("area").value=parseInt(sum,10)+'万平方公里';
- });
- </script>
- </body>
- </html>
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。