重庆分公司,新征程启航

为企业提供网站建设、域名注册、服务器等服务

OpenLayers 点击显示经纬度Demo

这里给大家分享我在OpenLayers地图开发工作中总结出的一下代码和注意点,希望对大家有所帮助

创新互联公司是一家集网站建设,秀屿企业网站建设,秀屿品牌网站建设,网站定制,秀屿网站建设报价,网络营销,网络优化,秀屿网站推广为一体的创新建站企业,帮助传统企业提升企业形象加强企业竞争力。可充分满足这一群体相比中小企业更为丰富、高端、多元的互联网需求。同时我们时刻保持专业、时尚、前沿,时刻以成就客户成长自我,坚持不断学习、思考、沉淀、净化自己,让我们为更多的企业打造出实用型网站。

效果如下:

核心代码展示:附带讲解注释

 var map = new ol.Map({ // 初始化地图
            target: 'map',// 选择地图对象
            layers: [
                new ol.layer.Tile({// 初始化Tile外部图层
                    source: new ol.source.XYZ({// 初始化XYZ切片服务图层
                        url:
                            'http://map.geoq.cn/ArcGIS/rest/services/ChinaOnlineStreetPurplishBlue/MapServer/tile/{z}/{y}/{x}', // XYZ切片服务地址
                        wrapX: false
                    })
                }),
                new ol.layer.Tile({// 初始化Tile外部图层
                    source: new ol.source.XYZ({// 初始化XYZ切片服务图层
                        url:
                            'http://t{0-7}.tianditu.com/DataServer?T=cia_w&x={x}&y={y}&l={z}&tk=5d27dc75ca0c3bdf34f657ffe1e9881d',// XYZ切片服务地址
                        wrapX: false
                    })
                })
            ],
            view: new ol.View({ 
                projection: 'EPSG:4326', //设置地图坐标系
                center: [113.87, 22.691],//设置地图中心点
                zoom: 12//设置地图层级
            }),
        });
        const BGLayer = new ol.layer.Tile({// 初始化Tile外部图层
            source: new ol.source.XYZ({// 初始化XYZ切片服务图层
                url: 'http://t{0-7}.tianditu.com/DataServer?T=img_w&x={x}&y={y}&l={z}&tk=5d27dc75ca0c3bdf34f657ffe1e9881d',// XYZ切片服务地址
                wrapX: false
            })
        })
        BGLayer.setVisible(false) //设置图层显示隐藏
        map.addLayer(BGLayer)//添加图层
        //实例化矢量点要素,通过矢量图层添加到地图容器中
        //这样就实现了预先加载图文标注
        var iconFeature = new ol.Feature();
        //设置点要素样式
        iconFeature.setStyle(createLabelStyle(iconFeature));
        //矢量标注的数据源
        var vectorSource = new ol.source.Vector({
            features: [iconFeature]
        });
        //矢量标注图层
        var vectorLayer = new ol.layer.Vector({
            source: vectorSource
        });
        map.addLayer(vectorLayer);
        //矢量标注样式设置函数,设置image为图标ol.style.Icon
        function createLabelStyle(feature) {
            return new ol.style.Style({
                image: new ol.style.Icon({
                    anchor: [40, 42],
                    scale: 0.5, // 图标缩小显示
                    anchorOrigin: 'top-right', // 标注样式的起点位置
                    anchorXUnits: 'pixels', // X方向单位:分数
                    anchorYUnits: 'pixels', // Y方向单位:像素
                    offsetOrigin: 'bottom-left', // 偏移起点位置的方向
                    opacity: 1, // 透明度
                    src: 'dian.png'  //图标的URL
                }),
                text: new ol.style.Text({
                    textAlign: 'center',            //位置
                    textBaseline: 'middle',         //基准线
                    font: 'normal 14px 微软雅黑',    //文字样式
                    fill: new ol.style.Fill({       //文本填充样式(即文字颜色)
                        color: '#000'
                    }),
                    stroke: new ol.style.Stroke({
                        color: '#F00',
                        width: 2
                    })
                })
            });
        }
        var newFeature = new ol.Feature({
            geometry: new ol.geom.Point([0,0])  //几何信息
        });
        newFeature.setStyle(createLabelStyle(newFeature));      //设置要素样式
        vectorSource.addFeature(newFeature);
        map.on('click', function (evt) {
            var coordinate = evt.coordinate;        //鼠标单击点的坐标
            //新建一个要素ol.Feature
            newFeature.set('geometry',new ol.geom.Point(coordinate))
            document.getElementsByClassName("list-box")[0].innerHTML = '

经度:' + coordinate[0].toFixed(3) + ' 纬度:' + coordinate[1].toFixed(3) + '

' }); map.on('moveend', function (evt) { if (map.getView().getZoom() >= 16) { BGLayer.setVisible(true) } else { BGLayer.setVisible(false) } })

当前标题:OpenLayers 点击显示经纬度Demo
文章源于:http://cqcxhl.com/article/dsojpdh.html

其他资讯

在线咨询
服务热线
服务热线:028-86922220
TOP