openlayers2渐变色渲染

news/2024/7/24 13:03:21

概述

在前文中,讲到了oL2中唯一值渲染的实现方式,在本文讲述ol2中渐变色渲染的实现方式。


效果


代码

<!DOCTYPE html>
<html>
<head lang="en">
    <meta charset="UTF-8">
    <title>openlayers map</title>
    <link rel="stylesheet" href="../../../plugin/OpenLayers-2.13.1/theme/default/style.css" type="text/css">
    <style>
        html, body, #map{
            padding:0;
            margin:0;
            height:100%;
            width:100%;
            overflow: hidden;
        }
    </style>
    <script src="../../../plugin/OpenLayers-2.13.1/OpenLayers.js"></script>
    <script src="../../../plugin/jquery/jquery-1.8.3.js"></script>
    <script>
        var map;
        var tiled;
        OpenLayers.IMAGE_RELOAD_ATTEMPTS = 5;
        OpenLayers.DOTS_PER_INCH = 25.4 / 0.28;
        $(window).load(function() {
            var format = 'image/png';
            var bounds = new OpenLayers.Bounds(
                    73.45100463562233, 18.16324718764174,
                    134.97679764650596, 53.531943152223576
            );
            var options = {
                controls: [],
                maxExtent: bounds,
                maxResolution: 0.2403351289487642,
                projection: "EPSG:4326",
                units: 'degrees'
            };
            map = new OpenLayers.Map('map', options);
            tiled = new OpenLayers.Layer.WMS(
                    "Geoserver layers - Tiled",
                    "http://localhost:8088/geoserver/lzugis/wms",
                    {
                        "LAYERS": 'province',
                        "STYLES": '',
                        format: format
                    },
                    {
                        buffer: 0,
                        displayOutsideMaxExtent: true,
                        isBaseLayer: true,
                        yx : {'EPSG:4326' : true}
                    }
            );
            map.addLayers([tiled]);
            OpenLayers.INCHES_PER_UNIT["千米"] = OpenLayers.INCHES_PER_UNIT["km"];
            OpenLayers.INCHES_PER_UNIT["米"] = OpenLayers.INCHES_PER_UNIT["m"];
            OpenLayers.INCHES_PER_UNIT["英里"] = OpenLayers.INCHES_PER_UNIT["mi"];
            OpenLayers.INCHES_PER_UNIT["英寸"] = OpenLayers.INCHES_PER_UNIT["ft"];
            //比例尺
            map.addControl(new OpenLayers.Control.ScaleLine({topOutUnits:"千米",topInUnits:"米",bottomOutUnits:"英里",
                bottomInUnits:"英寸"
            }));
            map.addControl(new OpenLayers.Control.Zoom());
            map.addControl(new OpenLayers.Control.Navigation());
            map.addControl(new OpenLayers.Control.OverviewMap());
            map.zoomToExtent(bounds);
            var style = new OpenLayers.Style({
                strokeColor: "#ffffff",
                strokeWidth: 1,
//                label: "${vocation}",
                labelAlign: "center",
                labelXOffset: "0",
                labelYOffset: "-0",
                fontColor: "#000000",
                fontFamily: "微软雅黑",
                fontSize:13
            },{
                rules: [
                    new OpenLayers.Rule({
                        // a rule contains an optional filter
                        filter: new OpenLayers.Filter.Comparison({
                            type: OpenLayers.Filter.Comparison.LESS_THAN,
                            property: "vocation", // the "foo" feature attribute
                            value: 2
                        }),
                        // if a feature matches the above filter, use this symbolizer
                        symbolizer: {
                            fillColor: "#2892c7"
                        }
                    }),
                    new OpenLayers.Rule({
                        filter: new OpenLayers.Filter.Comparison({
                            type: OpenLayers.Filter.Comparison.BETWEEN,
                            property: "vocation",
                            lowerBoundary: 2,
                            upperBoundary: 6
                        }),
                        symbolizer: {
                            fillColor: "#a0c29b"
                        }
                    }),
                    new OpenLayers.Rule({
                        filter: new OpenLayers.Filter.Comparison({
                            type: OpenLayers.Filter.Comparison.BETWEEN,
                            property: "vocation",
                            lowerBoundary: 6,
                            upperBoundary: 9
                        }),
                        symbolizer: {
                            fillColor: "#fafa64"
                        }
                    }),
                    new OpenLayers.Rule({
                        filter: new OpenLayers.Filter.Comparison({
                            type: OpenLayers.Filter.Comparison.BETWEEN,
                            property: "vocation",
                            lowerBoundary: 9,
                            upperBoundary: 14
                        }),
                        symbolizer: {
                            fillColor: "#fa8d34"
                        }
                    }),
                    new OpenLayers.Rule({
                        // apply this rule if no others apply
                        elseFilter: true,
                        symbolizer: {
                            fillColor: "#e81014"
                        }
                    })
                ]
            });
            var vector_layer = new OpenLayers.Layer.Vector("pro",{
                styleMap: new OpenLayers.StyleMap(style)
            });
            map.addLayer(vector_layer);
            $("#geojson").on("click",function(){
                $.get("data/province.geojson",null,function(result){
                    result = eval("("+result+")");
                    var geojson_format = new OpenLayers.Format.GeoJSON();
                    vector_layer.addFeatures(geojson_format.read(result));
                });
            });
        });
    </script>
</head>
<body>
<div id="map">
    <div style="position: absolute;top: 10pt;right: 10pt;z-index: 999;background: #fff;border: 1px solid #f00;padding: 10px;">
        <button id="geojson">add GeoJSON</button>
    </div>
</div>
</body>
</html>


传播GIS知识 | 交流GIS经验 | 分享GIS价值 | 专注GIS发展

技术博客

http://blog.csdn.net/gisshixisheng

在线教程

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)




http://www.niftyadmin.cn/n/1857026.html

相关文章

2021 IJCAI-SAIA:一场聚集青年精英的学术会议

By 超神经内容概要&#xff1a;作为 WAIC 的首场外场活动&#xff0c;2021 IJCAI-SAIA YES青年精英学术会议于今天在上海开幕。关键词&#xff1a;WAIC IJCAI 学术会议作为 WAIC 的首场外场活动&#xff0c;2021 IJCAI-SAIA YES青年精英学术会议于今天在上海开幕。活动由 IJC…

如何将float转化为int_如何将用户体验目标转化为分析衡量计划

在完整的商业设计中&#xff0c;设计师需要专注于用户体验目标以驱动分析衡量计划&#xff0c;而不仅仅跟踪表面指标。重要的是确定设计的核心目标&#xff0c;以对其进行有意义的评估。内容主要源于国外相关文章&#xff0c;所以更多意义上本人只是一个小搬运工&#xff0c;但…

36-盒子模型设置的超链接-形状像个按钮

<html><head><title>超链接背景颜色的设置</title><meta http-equiv"content-type" content"text/html;charsetutf-8"/><style>a{/*设置背景颜色*/BACKGROUND-COLOR: 74B500; COLOR: #ffffff;/*设置超链接的下划线样式…

大量POI的解决方案2

概述 在前面的文章中&#xff0c;讲述了通过“抽稀后台生成图片”的方式解决大量POI点展示的一种思路&#xff0c;后面看了tilestache的矢量切片方式&#xff0c;自己仔细思考了下&#xff0c;提出了本文大量POI点的展示解决方案。tilestache 大概看了下tilestache&#xff0c;…

python安装依赖_python安装依赖包方法

Python安装包的几种常用方式1). pip安装方式(正常在线安装)2). whl安装方式(离线安装)&#xff0c;一般是.whl格式的包3). 源码安装方式(离线安装)&#xff0c;tar.gz/egg格式4). easy_install安装方式(用的比较少)不同安装方式具体安装步骤1). pip是一个通用的 Python 包管理工…

python网络请求_Http请求的Python实现

一、urllib实现&#xff1a; urllib是Python中的内置模块实现一个完整的请求与响应模型&#xff1a;urllib提供一个基础函数urlopen&#xff0c;通过向指定的url发出请求来获取数据。import urllib.requestresponse urllib.request.urlopen(http://www.zhihu.com)html respon…

Uva10972(RevolC FaeLoN)

题目链接:传送门 题目大意:给你一副无向图&#xff0c;问至少加多少条边使图成为边双联通图 题目思路:tarjan算法缩点&#xff08;如果已经是双连通图就直接输出0&#xff09; #include <iostream> #include <cstdio> #include <cstdlib> #include <cmath…

WMS图例展示

概述&#xff1a; 在OGC标准中&#xff0c;可以通过GetLegendGraphic接口来获取图例&#xff0c;本文讲述如何结合WMS的REST接口&#xff0c;实现唯一值渲染图层每个值对应的图例的获取。效果&#xff1a;GetLegendGraphic接口获取到的图例rest接口获取到的图例的数据实现后的效…