• Openlayer 3 的画图测量面积


    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>画图测量面积</title>
        <link rel="stylesheet" href="css/ol.css">
        <script src="js/jquery-1.11.3.js"></script>
        <script src="js/ol.js"></script>
        <style>
            #map{
                width:100%;
                height:100%;
            }
            .tooltip {
                position: relative;
                background: rgba(0, 0, 0, 0.5);
                border-radius: 4px;
                color: white;
                padding: 4px 8px;
                opacity: 0.7;
                white-space: nowrap;
            }
            .tooltip-measure {
                opacity: 1;
                font-weight: bold;
            }
            .tooltip-static {
                background-color: #ffcc33;
                color: black;
                border: 1px solid white;
            }
            .tooltip-measure:before,
            .tooltip-static:before {
                border-top: 6px solid rgba(0, 0, 0, 0.5);
                border-right: 6px solid transparent;
                border-left: 6px solid transparent;
                content: "";
                position: absolute;
                bottom: -6px;
                margin-left: -7px;
                left: 50%;
            }
            .tooltip-static:before {
                border-top-color: #ffcc33;
            }
        </style>
    </head>
    <body>
        <div id="map"></div>
        <script>
            var map=new ol.Map({
                target:'map',
                layers:[
                    new ol.layer.Tile({
                        source:new ol.source.OSM()
                    })
                ],
                view:new ol.View({
                    center:[0,0],
                    zoom:2
                })
            });//初始化地图
            var drawing_layer = new ol.layer.Vector({
                source: new ol.source.Vector(),
                style:new ol.style.Style({
                    fill:new ol.style.Fill({
                        color:"rgba(225,225,225,.2)"
                    }),
                    stroke:new ol.style.Stroke({
                        color:"#ffcc33",
                        2
                    }),
                    image:new ol.style.Circle({
                        radius:7,
                        fill:new ol.style.Fill({
                            color:"#ffcc33"
                        })
                    })
                })
            });// 画面积计算的图层
            map.addLayer(drawing_layer);
            var polygon_drawing_tool = new ol.interaction.Draw({
                source: drawing_layer.getSource(),
                type: 'Polygon',
                style: new ol.style.Style({
                    fill: new ol.style.Fill({
                        color: '#ffcc33'
                    }),
                    stroke: new ol.style.Stroke({
                        color: '#ffcc33',
                        lineDash: [10, 10],
                         3
                    }),
                    image: new ol.style.Circle({
                        radius: 5,
                        stroke: new ol.style.Stroke({
                            color: 'rgba(0, 0, 0, 0.7)'
                        }),
                        fill: new ol.style.Fill({
                            color: '#ffcc33'
                        })
                    })
                })
            });//绘图控件对象
            var listener;//绑定交互绘制工具开始绘制事件
            var measureTooltipElement;
            polygon_drawing_tool.on('drawstart',function(evt) {
                sketch = evt.feature;
                var tooltipCoord = evt.coordinate;
                listener = sketch.getGeometry().on('change', function(evt) {
                    var geom = evt.target;
                    var output = formatArea(/** @type {ol.geom.LineString} */ (geom));
                    tooltipCoord = geom.getLastCoordinate();
                    createMeasureTooltip();
                    measureTooltipElement.innerHTML = output;
                    measureTooltip.setPosition(tooltipCoord);
                });
            }, this);
            polygon_drawing_tool.on('drawend',function() {
                measureTooltipElement.className = 'tooltip tooltip-static';
                measureTooltip.setOffset([0, -7]);
                sketch = null;
                measureTooltipElement = null;
                createMeasureTooltip();
                ol.Observable.unByKey(listener);
            }, this);
            var formatArea = function(polygon) {
                var area=polygon.getArea();
                var output;
                if(area>10000){
                    output=(Math.round(area/1000000*100)/100)+' '+'km<sup>2</sup>';
                }else{
                    output=(Math.round(area*100)/100)+' '+'m<sup>2</sup>';
                }
                return output;
            };
            function createMeasureTooltip() {
                if (measureTooltipElement) {
                    measureTooltipElement.parentNode.removeChild(measureTooltipElement);
                }
                measureTooltipElement = document.createElement('div');
                measureTooltipElement.className = 'tooltip tooltip-measure';
                measureTooltip = new ol.Overlay({
                    element: measureTooltipElement,
                    offset: [0, -15],
                    positioning: 'bottom-center'
                });
                map.addOverlay(measureTooltip);
            }
            $(document).ready(function() {
                map.addInteraction(polygon_drawing_tool);
            });
        </script>
    </body>
    </html>

  • 相关阅读:
    css基础
    什么是css
    js写guess网页
    JavaScript_day02
    html基础知识
    JavaScript_day01
    由一个瀑布流导出对滚动条滚动距离,可视区尺寸,元素尺寸的内容的知识点
    一个页面从输入URL到页面加载显示完成,这个过程中发生了什么?
    http常用状态吗以及分别代表什么意思?
    cookies,sessionStorage和localStorage的相同点和不同点?
  • 原文地址:https://www.cnblogs.com/mina-huojian66/p/6143880.html
Copyright © 2020-2023  润新知