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)
阅读全文
0 0
- OL3矢量图层样式自定义
- ArcEngine 预览矢量图层渲染样式
- QGis二次开发基础 -- 矢量图层的显示样式
- QGis二次开发基础 -- 矢量图层的显示样式
- 自定义饼图layer(ol3)
- 矢量图层标注
- Openlayers矢量图层
- OpenLayers开发:调用矢量图层
- ArcGIS矢量图层面积计算方法
- 矢量图层(FeatureClass)获取和更新Extent
- C#+ArcEngine:设置矢量图层的透明度
- C#+ArcEngine:设置矢量图层的透明度
- ArcEngine开发之矢量图层渲染实现
- openlayers2 wfs方式加载矢量图层
- 下载openlayers vector layers 矢量图层
- ArcMapControl不显示矢量图层的问题
- 提取矢量图层外部的栅格图
- QGIS开发之矢量图层的使用
- POJ 2341 Spell checker 笔记
- Java学习笔记-《Java程序员面试宝典》-第四章基础知识-4.10多线程(4.10.1-4.10.4)
- python数据类型详解
- 《软件工程——实践者的研究方法》全书36个重难点页码索引(英文第8版,机械工业出版社)
- 重“心”出发
- OL3矢量图层样式自定义
- 我的python学习笔记(3) numpy
- 【JZOJ 3765】【BJOI2014】想法
- JAVA面试题之冒泡排序,插入排序及选择排序
- No.547. Friend Circles
- 系统级I/O
- phpstorm 2016.3.2 的最新破解方法(截止2017-2-20)
- Android四大件之Service
- cartographer源码分析(5)-common-rate_time.h