OL3矢量图层样式自定义

来源:互联网 发布:cocos2d js动作 编辑:程序博客网 时间:2024/06/04 19:11

概述:

本文讲述如何在OL3中加载Geojson并动态修改图层样式。


效果:


地图展示


样式修改面板


实现代码:

<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8" /><title>Ol3 wms</title><link rel="stylesheet" type="text/css" href="../../../plugin/ol3/css/ol.css"/><style type="text/css">body, #map {border: 0px;margin: 0px;padding: 0px;width: 100%;height: 100%;font-size: 13px;}.style-box{position: absolute;top: 10px;right: 10px;z-index: 999;background: #ffffff;border: 1px solid #cccccc;box-shadow: 2px 2px 3px #C0C0C0;padding: 10px;border-radius: 4px;}.style-box ul{margin: 0px;}.style-box ul li{list-style: none;margin: 0px;margin-left: -40px;}.style-box ul li h5{margin: 6px 0px;}</style><script type="text/javascript" src="../../../plugin/ol3/build/ol-debug.js"></script><script type="text/javascript" src="../../../plugin/jquery/jquery-1.8.3.js"></script><script type="text/javascript" src="extends/color_exchange.js"></script><script type="text/javascript">function init(){var bounds = [73.4510046356223, 18.1632471876417,134.976797646506, 53.5319431522236];var projection = new ol.proj.Projection({code: 'EPSG:4326',units: 'degrees'});$.get("data/province.geojson",null,function(result){var features = (new ol.format.GeoJSON()).readFeatures(result);var vectorSource = new ol.source.Vector();vectorSource.addFeatures(features);var vector = new ol.layer.Vector({source: vectorSource,style:getStyle("blue", "true", 2)});var map = new ol.Map({controls: ol.control.defaults({attribution: false}),target: 'map',layers: [vector],view: new ol.View({projection: projection})});map.getView().fit(bounds, map.getSize());//线的颜色$("input[name='linecolor']").on("change",function(){                    var _color = $(this).val();    if(_color===""){                        $("#linecolor").show();}else{                        $("#linecolor").attr("value", _color).hide();}                    vector.setStyle(getStyle());});                //填充颜色                $("input[name='fillcolor']").on("change",function(){                    var _color = $(this).val();                    if(_color===""){                        $("#fillcolor").show();                    }                    else{                        $("#fillcolor").attr("value", _color).hide();                    }                    vector.setStyle(getStyle());                });//透明度,线的颜色,填充颜色,线条类型,线条宽度                $("input[name='linetype'], input[name='linewidth'], #islabel").on("change",function(){                    vector.setStyle(getStyle());                });                $("#opacity, #linecolor, #fillcolor").on("input propertychange",function(){                    vector.setStyle(getStyle());                });});}function getStyle() {            var color = $("input[name='linecolor']:checked").val();            var fillColor = $("#fillcolor").val();            var opacity = $("#opacity").val();            if(color===""){                color = $("#linecolor").val();            }            fillColor = fillColor.colorRgb();            var _fillColor = "RGBA("+fillColor[0]+","+fillColor[1]+","+fillColor[2]+","+opacity+")";            var dash = $("input[name='linetype']:checked").val();            var width = parseInt($("input[name='linewidth']").val());    var _dash = dash==="true"?3*width:0;    var islabel = $("#islabel")[0].checked;            return function(feature, resolution){                var name = feature.get("name");                var lblcolor = '#000000';                if(!islabel)lblcolor = 'rgba(0,0,0,0)';                return new ol.style.Style({                    stroke: new ol.style.Stroke({                        color: color,                        lineDash: [_dash, _dash],                        width: width                    }),                    fill: new ol.style.Fill({                        color: _fillColor,                        opacity:opacity                    }),                    text: new ol.style.Text({                        text: name,                        fill: new ol.style.Fill({                            color:lblcolor                        })                    })                });}        }</script></head><body onLoad="init()"><div id="map"><div class="style-box"><ul><li><h5><input type="checkbox" name="islabel" id="islabel">显示标注</h5></li><li><h5>填充颜色:</h5><input type="radio" name="fillcolor" value="#000000">黑色<input type="radio" name="fillcolor" value="#0000ff" checked="checked">蓝色<input type="radio" name="fillcolor" value="#ff0000">红色<input type="radio" name="fillcolor" value="">自定义<input type="color" id="fillcolor" value="#0000ff" style="display: none;"/></li><li><h5>填充透明度:</h5><input type="number" id="opacity" value="0.3" min="0" max="1" step="0.1" style="width: 100%;"></li><li><h5>线条颜色:</h5><input type="radio" name="linecolor" value="#000000">黑色<input type="radio" name="linecolor" value="#0000ff" checked="checked">蓝色<input type="radio" name="linecolor" value="#ff0000">红色<input type="radio" name="linecolor" value="">自定义<input type="color" id="linecolor" value="#0000ff" style="display: none;"/></li><li><h5>线条类型:</h5><input type="radio" name="linetype" value="false">实线<input type="radio" name="linetype" value="true" checked="checked">虚线</li><li><h5>线条宽度:</h5><input type="number" name="linewidth" value="2" min="1" max="5" style="width: 100%;"></li></ul></div></div></body></html>

---------------------------------------------------------------------------------------------------------------

技术博客

CSDN:http://blog.csdn.NET/gisshixisheng

博客园:http://www.cnblogs.com/lzugis/

在线教程

http://edu.csdn.Net/course/detail/799

Github

https://github.com/lzugis/

联系方式

q       q:1004740957

e-mail:niujp08@qq.com

公众号:lzugis15

Q Q 群:452117357(webgis)

             337469080(Android)



原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 移动预约号码取消怎么办 身份证换地址驾驶证怎么办 刚来成都怎么办居住证 我在外地怎么办身份证 身份证丢在外地怎么办 换领新身份证时旧证丢了怎么办 二代身份证重号怎么办 北京行驶证到期怎么办 北京驾驶证即将过期怎么办 去澳门没有网络怎么办 三个周期未年检怎么办 深圳驾照丢了怎么办 武汉驾照年审过期怎么办 武汉驾照过期了怎么办 科二过不了怎么办 南京身份证到期换新怎么办 过期身份证丢了怎么办 南京驾照过期了怎么办 换驾照身体证明怎么办 学车办理暂住证怎么办 a牌驾照扣分怎么办 b牌驾照扣分怎么办 b驾照扣分了怎么办 考驾照要暂住证怎么办 换驾驶证有色盲怎么办 外籍人员办理就业证怎么办 驾驶证该审过期怎么办 小车证扣满12分怎么办 b证扣满12分怎么办 车过户后保险怎么办 换新轮胎旧轮胎怎么办 驾照一审超一年怎么办 驾驶证年检过期了怎么办 交管12123怎么办进京证 驾照登录密码忘记怎么办 预约密码忘记了怎么办 学驾照密码忘记怎么办 考驾照不识字怎么办 驾校密码忘了怎么办 b证酒驾扣12分怎么办 成都驾照过期了怎么办