当前位置:   article > 正文

openlayers5.3.0实现根据选择的图形来统计图形总面积_openlayer 圈选统计面积

openlayer 圈选统计面积
  1. <html lang="en">
  2. <head>
  3. <meta charset="utf8">
  4. <link rel="stylesheet" href="./css/ol.css" type="text/css">
  5. <style>
  6. .map {
  7. height: 100%;
  8. width: 100%;
  9. position: relative;
  10. }
  11. #area{
  12. top:10px;
  13. right: 60px;
  14. height:30px;
  15. width:120px;
  16. text-align:center;
  17. font-weight: bold;
  18. display:none;
  19. position: fixed;
  20. z-index: 999;
  21. border-style:none;
  22. background-color:transparent;
  23. font-family: STZhongsong;
  24. }
  25. #btn{
  26. width:150px;
  27. top:10px;
  28. right: 300px;
  29. height:30px;
  30. background-color: #FFFFF0;
  31. position: fixed;
  32. z-index: 999;
  33. font-family: STZhongsong;
  34. }
  35. </style>
  36. <script src="./build/ol.js"></script>
  37. <title>OpenLayers example</title>
  38. </head>
  39. <body>
  40. <div id="map" class="map">
  41. <div>
  42. <input id="area" type="text" value="0万平方公里" />
  43. <button id="btn" type="button" onclick=show()>选择要素统计面积</button>
  44. </div>
  45. </div>
  46. <script type="text/javascript">
  47. var vector=new ol.layer.Vector({
  48. source:new ol.source.Vector({
  49. url:'./data/geojson/countries.geojson',
  50. format:new ol.format.GeoJSON()
  51. })
  52. });
  53. var tilelayer= new ol.layer.Tile({
  54. source: new ol.source.OSM()
  55. });
  56. var map = new ol.Map({
  57. target: 'map',
  58. layers: [
  59. tilelayer,vector
  60. ],
  61. view: new ol.View({
  62. projection: 'EPSG:4326',
  63. center:[117,42],
  64. zoom: 4
  65. })
  66. });
  67. var select=new ol.interaction.Select({
  68. condition:ol.events.condition.click,
  69. toggleCondition:ol.events.condition.click
  70. });
  71. var oBtn=document.getElementById("btn");
  72. var flag=false;
  73. var arr=[];
  74. var sum=0;
  75. function show(){
  76. flag=!flag;
  77. if(flag){
  78. oBtn.style.backgroundColor='#F0F8FF'
  79. document.getElementById("area").style.display="block";
  80. map.addInteraction(select);
  81. sum=0;
  82. document.getElementById("area").value=parseInt(sum,10)+'万平方公里';
  83. }
  84. else{
  85. oBtn.style.backgroundColor='#FFFFF0'
  86. document.getElementById("area").style.display="none";
  87. map.removeInteraction(select);
  88. select.getFeatures().clear();
  89. arr=[];
  90. sum=0;
  91. }
  92. }
  93. select.on('select',function(eve){
  94. if(eve.deselected.length>0){
  95. var deselectFeature=eve.deselected;
  96. for(var i=0;i<deselectFeature.length;i++){
  97. var deselectArea= deselectFeature[i].getGeometry().getArea();
  98. for(var i=0;i<arr.length;i++){
  99. if(arr[i]==deselectArea){
  100. arr.splice(i,1);
  101. console.log(arr)
  102. sum=0;
  103. }
  104. }
  105. }
  106. }
  107. else{
  108. var selectFeature =eve.selected;
  109. for(var i=0;i<selectFeature.length;i++){
  110. var selectArea=selectFeature[i].getGeometry().getArea();
  111. arr.push(selectArea);
  112. sum=0;
  113. }
  114. }
  115. for(var i=0;i<arr.length;i++){
  116. sum=sum+arr[i];
  117. }
  118. console.log(sum)
  119. document.getElementById("area").value=parseInt(sum,10)+'万平方公里';
  120. });
  121. </script>
  122. </body>
  123. </html>

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Monodyee/article/detail/607430
推荐阅读
相关标签
  

闽ICP备14008679号