zoukankan      html  css  js  c++  java
  • openlayers添加弹出框

    <!DOCTYPE html>
    <html lang="en">
    
    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <meta http-equiv="X-UA-Compatible" content="ie=edge">
        <link rel="stylesheet" href="lib/OpenLayers/ol.css" type="text/css">
    
        <script src="http://apps.bdimg.com/libs/jquery/2.1.4/jquery.min.js"></script>
        <script src="lib/OpenLayers/ol.js"></script>
        <script src="olStyle/Light.js"></script>
        <title>Document</title>
        <style>
            html,
            body {
                 100%;
                height: 100%;
                margin: 0;
            }
    
            .map {
                 100%;
                height: 100%;
                background: #f6f6f4;
            }
    
            input[type=range] {
                -webkit-appearance: none;
                 300px;
                border-radius: 10px;
                /*这个属性设置使填充进度条时的图形为圆角*/
            }
    
            input[type=range]::-webkit-slider-thumb {
                -webkit-appearance: none;
            }
    
            input[type=range]::-webkit-slider-runnable-track {
                height: 15px;
                border-radius: 10px;
                /*将轨道设为圆角的*/
                box-shadow: 0 1px 1px #65bdd3, inset 0 .125em .125em #127f9b;
                /*轨道内置阴影效果*/
            }
    
            input[type=range]:focus {
                outline: none;
            }
    
            input[type=range]::-webkit-slider-thumb {
                -webkit-appearance: none;
                height: 25px;
                 25px;
                margin-top: -5px;
                /*使滑块超出轨道部分的偏移量相等*/
                background: #08c1e6;
                border-radius: 50%;
                /*外观设置为圆形*/
                border: solid 0.125em rgba(49, 155, 187, 0.5);
                /*设置边框*/
                box-shadow: 0 .125em .125em #08c1e6;
                /*添加底部阴影*/
            }
    
            /**
            下面是弹框样式
            */
    
            .ol-popup {
                position: absolute;
                background-color: white;
                -webkit-filter: drop-shadow(0 1px 4px rgba(0, 0, 0, 0.2));
                filter: drop-shadow(0 1px 4px rgba(0, 0, 0, 0.2));
                border-radius: 10px;
                border: 1px solid #cccccc;
                bottom: 12px;
                left: -50px;
                min- 280px;
            }
    
            .ol-popup:after,
            .ol-popup:before {
                top: 100%;
                border: solid transparent;
                content: " ";
                height: 0;
                 0;
                position: absolute;
                pointer-events: none;
            }
    
            .ol-popup:after {
                border-top-color: white;
                border- 10px;
                left: 48px;
                margin-left: -10px;
            }
    
            .ol-popup:before {
                border-top-color: #cccccc;
                border- 11px;
                left: 48px;
                margin-left: -11px;
            }
    
            .ol-popup-closer {
                text-decoration: none;
                position: absolute;
                top: 0px;
                right: 8px;
            }
    
            .ol-popup-closer:after {
                content: "✖";
            }
    
            .popup-top {
                background-color: #eeeeee;
                height: 30px;
                line-height: 30px;
                border-top-left-radius: 5px;
                border-top-right-radius: 5px;
            }
    
            .popup-title {
                padding-left: 10px;
            }
    
            .popup-content {
                padding: 10px;
            }
    
            .popup-content ul {
                list-style: none;
                padding: 0px;
                margin: 0px;
                font-size: 12px;
            }
        </style>
    </head>
    
    <body>
        <input type="button" id="tempstop" value="暂停" />
        <input type="button" id="start" value="开始" />
        <input type="button" id="stop" value="停止" />
        <input type="button" id="next" value="前进" />
        <input type="button" id="prev" value="后退" />
        <input type="range" id="sudu" value="800" max="2000" min="100" step="100" />
        <div id="map" class="map" data-id="11"></div>
    
        <div id="popup" class="ol-popup">
            <div class="popup-top">
                <span class="popup-title">当前坐标信息</span>
                <a href="#" id="popup-closer" class="ol-popup-closer"></a>
            </div>
            <div class="popup-content">
                <ul id="popup-content">
    
                </ul>
            </div>
        </div>
    </body>
    
    </html>
    <script type="text/javascript">
        var points = [
            [120.27194738388057, 36.3357839481728,new Date()]
            , [120.27194738388057, 36.33528166973691,new Date()]
            , [120.2717328071594, 36.33459124591144,new Date()]
            , [120.27145385742186, 36.333882530121315,new Date()]
            , [120.270938873291, 36.33315652189482,new Date()]
            , [120.27091741561887, 36.332741657013344,new Date()]
            , [120.2705955505371, 36.33213664176766,new Date()]
            , [120.27070283889768, 36.33139333089085,new Date()]
            , [120.27057409286496, 36.33087473770719,new Date()]
            , [120.27108907699584, 36.33006226811251,new Date()]
            , [120.27177572250363, 36.32987211443067,new Date()]
            , [120.27271986007688, 36.329664673521194,new Date()]
            , [120.27357816696164, 36.32918064258463,new Date()]
            , [120.27342796325681, 36.32826443293632,new Date()]
            , [120.27364253997803, 36.32753837235599,new Date()]
            , [120.27447938919066, 36.327088902892015,new Date()]
            , [120.2756381034851, 36.326795017609925,new Date()]
            , [120.27731180191037, 36.32632825635429,new Date()]
            , [120.27881383895873, 36.32601708063062,new Date()]
            , [120.28033733367917, 36.32572319130615,new Date()]
            , [120.28138875961302, 36.32570590366433,new Date()]
            , [120.2832770347595, 36.32555031471519,new Date()]
            , [120.28469324111937, 36.32555031471519,new Date()]
            , [120.28591632843013, 36.32548116397142,new Date()]
            , [120.2876543998718, 36.325412013166286,new Date()]
            , [120.2888774871826, 36.325412013166286,new Date()]
            , [120.29087305068967, 36.3253774377407,new Date()]
            , [120.29175281524657, 36.32485880451607,new Date()]
            , [120.29284715652466, 36.3245649108233,new Date()]
        ]
    
        var map;
    
    
        var container = document.getElementById('popup');
        var content = document.getElementById('popup-content');
        var closer = document.getElementById('popup-closer');
    
        var overlay = new ol.Overlay({
            element: container,
            autoPan: true,
            autoPanAnimation: {
                duration: 50
            }
        });
    
        closer.onclick = function () {
            overlay.setPosition(undefined);
            closer.blur();
            return false;
        };
    
        //轨迹
        var layer = new ol.layer.Vector({
            source: new ol.source.Vector(),
            style: new ol.style.Style({
                fill: new ol.style.Fill({
                    color: 'rgba(255, 0, 0, 0.5)'
                }),
                stroke: new ol.style.Stroke({
                    color: 'red',
                     2
                })
            })
        });
    
        //样式
        var style = new ol.style.Style({
            image: new ol.style.Circle({
                radius: 5,
                snapToPixel: false,
                fill: new ol.style.Fill({ color: 'rgba(30,144,255,1)' }),
                stroke: new ol.style.Stroke({
                    color: 'rgb(30,144,255)',  2
                })
            })
        });
    
        //地图初始化
        function InitMap() {
            map = new ol.Map({
                layers: [new ol.layer.Vector({
                    source: new ol.source.Vector(),
                    style: function (feature, resolution) {
                        switch (feature.get('layer')) {
                            case 'poi':
                                poiStyle.getText().setText(feature.get('name'));
                                return poiStyle;
                            case 'boundary': return boundaryStyle;
                            case 'lawn': return lawnStyle;
                            case 'road':
                                roadStyle.getText().setText(feature.get('name'));
                                return (resolution < 2) ? roadStyle : null;
                            case 'building':
                                return buildingStyle(feature, resolution);
                            case 'other':
                                otherStyle.getText().setText(feature.get('name'));
                                return otherStyle;
                            default: return null;
                        }
                    }
                }), layer],
                overlays: [overlay],
                target: 'map',
                view: new ol.View({
                    center: ol.proj.fromLonLat([120.277, 36.330]),
                    minZoom: 1,
                    zoom: 16
                })
            });
        }
    
    
    
        var pointStyle = new ol.style.Style({
            //把点的样式换成ICON图标
            fill: new ol.style.Fill({
                //填充颜色
                color: 'rgba(37,241,239,0.2)'
            }),
            //图形样式,主要适用于点样式
            image: new ol.style.Circle({
                //半径大小
                radius: 5,
                //填充
                fill: new ol.style.Fill({
                    //填充颜色
                    color: 'rgba(255,0,0,0.3)'
                })
            })
        });
    
        /*显示并编辑区域**********************************************************************************/
        function AddPolygon() {
            layer.getSource().clear();
    
            for (var i = 0; i < points.length; i++) {
                if (i == 0) {
                    AddPoint(style, points[i], i);
                } else {
                    AddPoint(pointStyle, points[i], i);
                }
            }
        }
    
        function AddPoint(style, lnglat, id) {
            var newFeature = new ol.Feature({
                geometry: new ol.geom.Point(ol.proj.fromLonLat(lnglat))
            });
    
            //设置点的样式
            newFeature.setStyle(style);
    
            newFeature.setId("PlayPoints" + id)
    
            //将当前要素添加到矢量数据源中
            layer.getSource().addFeature(newFeature);
        }
    
        InitMap();
    
        map.on('click', function (evt) {
            // var coordinate = evt.coordinate;
            // var hdms = JSON.stringify(coordinate);
            var pixel = map.getEventPixel(evt.originalEvent);
            var feature = map.forEachFeatureAtPixel(pixel, function (feature) { return feature; });//查询方式有很多 
    
            var html = ''
            if (feature) {
                var id = feature.getId();
    
                if (id == undefined) {
                    return false;
                }
    
                id = id.replace('PlayPoints', '');
    
                html += "<li>上传时间:" + points[id][2] + "</li>"
    
                content.innerHTML = html;
    
                overlay.setPosition(ol.proj.fromLonLat(points[id]));
            }
        });
    
        layer.getSource().clear();
    
        AddPolygon();
    
        //动画
        var index = 0;
        var playInterval
    
        var trackPlay = {};
        trackPlay.start = function () {
            if (index == 0) {
                layer.getSource().clear();
            }
    
            var speed = 2000 / $("#sudu").val() * 50
    
            $("#sudu").attr("disabled", "disabled")
    
            playInterval = setInterval(() => {
                if (index == 0) {
                    AddPoint(style, points[index], index);
                } else {
                    AddPoint(pointStyle, points[index], index);
                }
    
                index = index + 1;
    
                if (index >= points.length) {
                    trackPlay.stop();
                }
            }, speed)
        }
        trackPlay.stop = function () {
            index = 0;
            // if (trackPlay.stop) {
            clearInterval(playInterval);
            $("#sudu").removeAttr("disabled")
            // }
        }
        trackPlay.pause = function () {
            // if (trackPlay.stop) {
            clearInterval(playInterval);
    
            $("#sudu").removeAttr("disabled")
            // }
        }
        trackPlay.next = function () {
            if (index >= points.length) {
                return false;
            }
    
            AddPoint(pointStyle, points[index], index);
    
            index = index + 1;
        }
        trackPlay.prev = function () {
            if (index == 0) {
                return false;
            }
    
            index = index - 1;
            var feature = this.getLastFeature();
            layer.getSource().removeFeature(feature);
        }
        trackPlay.getLastFeature = function () {
            return layer.getSource().getFeatureById("PlayPoints" + index);
        }
    
        $("#tempstop").click(function () {
            trackPlay.pause();
        })
    
    
        $("#start").click(function () {
            trackPlay.start();
        })
    
        $("#stop").click(function () {
            trackPlay.stop();
            AddPolygon();
        })
    
        $("#next").click(function () {
            trackPlay.next();
        })
    
        $("#prev").click(function () {
            trackPlay.prev();
        })
    
    </script>
    

      

  • 相关阅读:
    hdu 1017 A Mathematical Curiosity 解题报告
    hdu 2069 Coin Change 解题报告
    hut 1574 组合问题 解题报告
    hdu 2111 Saving HDU 解题报
    hut 1054 Jesse's Code 解题报告
    hdu1131 Count the Trees解题报告
    hdu 2159 FATE 解题报告
    hdu 1879 继续畅通工程 解题报告
    oracle的系统和对象权限
    oracle 自定义函数 返回一个表类型
  • 原文地址:https://www.cnblogs.com/zhoushangwu/p/9497756.html
Copyright © 2011-2022 走看看