http://blog.csdn.net/gisshixisheng/article/details/46137015

概述:

在前面的博文中讲述过基于Arcgis for js如何实现聚类统计展示,在本文中讲述如何基于openlayers实现聚类统计的效果,Arcgis for js聚类统计的博文地址为:

http://blog.csdn.net/gisshixisheng/article/details/40867989

效果:

实现关键点:

实现代码:

1、数据格式

2、设置显示样式

[javascript] view plaincopy print?
  1. var style = new OpenLayers.Style({
  2. fillColor: "#ffcc66",
  3. strokeColor: "#ff9933",
  4. strokeWidth: 2,
  5. label: "${count}",
  6. fontColor: "#333333",
  7. fontFamily: "sans-serif",
  8. fontWeight: "bold"
  9. }, {
  10. rules: [
  11. new OpenLayers.Rule({
  12. minScaleDenominator: 100000000,
  13. symbolizer: {
  14. pointRadius: 7,
  15. fontSize: "9px"
  16. }
  17. }),
  18. new OpenLayers.Rule({
  19. maxScaleDenominator: 100000000,
  20. minScaleDenominator: 50000000,
  21. symbolizer: {
  22. pointRadius: 10,
  23. fontSize: "11px"
  24. }
  25. }),
  26. new OpenLayers.Rule({
  27. maxScaleDenominator: 50000000,
  28. symbolizer: {
  29. pointRadius: 13,
  30. fontSize: "13px"
  31. }
  32. })
  33. ]
  34. });

3、添加矢量图层

[javascript] view plaincopy print?
  1. var features = new Array();
  2. for (var i=0; i<data.length; i++) {
  3. features[i] = new OpenLayers.Feature.Vector(
  4. new OpenLayers.Geometry.Point(data[i].x, data[i].y),
  5. {
  6. count:data[i].count,
  7. name:data[i].name
  8. }
  9. );
  10. }
  11. var clusterLayer = new OpenLayers.Layer.Vector("Points", {
  12. styleMap: new OpenLayers.StyleMap(style)
  13. });
  14. clusterLayer.addFeatures(features);
  15. map1.addLayer(clusterLayer);

程序完整代码为;

[html] view plaincopy print?
  1. <!DOCTYPE html>
  2. <html>
  3. <head lang="en">
  4. <meta charset="UTF-8">
  5. <title>openlayers map</title>
  6. <link rel="stylesheet" href="http://localhost/olapi/theme/default/style.css" type="text/css">
  7. <style>
  8. html, body{
  9. padding:0;
  10. margin:0;
  11. height:100%;
  12. width:100%;
  13. overflow: hidden;
  14. font-size: 12px;
  15. }
  16. #map1{
  17. width: 100%;
  18. height: 100%;
  19. float: left;
  20. border-right: 1px solid #000000;
  21. }
  22. </style>
  23. <script src="http://localhost/olapi/OpenLayers.js"></script>
  24. <script src="http://localhost/olapi/lib/OpenLayers/Lang/zh-CN.js"></script>
  25. <script src="http://localhost/jquery/jquery-1.8.3.js"></script>
  26. <script>
  27. var map1, vectors;
  28. OpenLayers.Feature.Vector.style['default']['strokeWidth'] = '2';
  29. $(function(){
  30. var bounds = new OpenLayers.Bounds(
  31. 73.45100463562233, 18.16324718764174,
  32. 134.97679764650596, 53.531943152223576
  33. );
  34. var options = {
  35. controls: [],
  36. maxExtent: bounds,
  37. maxResolution: 0.2403351289487642,
  38. projection: "EPSG:4326",
  39. units: 'degrees'
  40. };
  41. map1 = new OpenLayers.Map('map1', options);
  42. map1.addLayer(getWms("china"));
  43. map1.addControl(new OpenLayers.Control.Zoom());
  44. map1.addControl(new OpenLayers.Control.Navigation());
  45. map1.zoomToExtent(bounds);
  46. addCluster();
  47. });
  48. function getWms(layer){
  49. return new OpenLayers.Layer.WMS(
  50. "Geoserver layers - Tiled",
  51. "http://localhost:8081/geoserver/lzugis/wms",
  52. {
  53. "LAYERS": layer,
  54. "STYLES": '',
  55. format: 'image/png'
  56. },
  57. {
  58. buffer: 0,
  59. displayOutsideMaxExtent: true,
  60. isBaseLayer: true,
  61. yx : {'EPSG:4326' : true}
  62. }
  63. );
  64. }
  65. function addCluster(){
  66. var style = new OpenLayers.Style({
  67. fillColor: "#ffcc66",
  68. strokeColor: "#ff9933",
  69. strokeWidth: 2,
  70. label: "${count}",
  71. fontColor: "#333333",
  72. fontFamily: "sans-serif",
  73. fontWeight: "bold"
  74. }, {
  75. rules: [
  76. new OpenLayers.Rule({
  77. minScaleDenominator: 100000000,
  78. symbolizer: {
  79. pointRadius: 7,
  80. fontSize: "9px"
  81. }
  82. }),
  83. new OpenLayers.Rule({
  84. maxScaleDenominator: 100000000,
  85. minScaleDenominator: 50000000,
  86. symbolizer: {
  87. pointRadius: 10,
  88. fontSize: "11px"
  89. }
  90. }),
  91. new OpenLayers.Rule({
  92. maxScaleDenominator: 50000000,
  93. symbolizer: {
  94. pointRadius: 13,
  95. fontSize: "13px"
  96. }
  97. })
  98. ]
  99. });
  100. var data = [{name:"乌鲁木齐",x:87.5758285931,y:43.7822116460,count:10},
  101. {name:"拉萨",x:91.1629975040,y:29.7104204643,count:30},
  102. {name:"西宁",x:101.797302689,y:36.5936423859,count:50},
  103. {name:"兰州",x:103.584297498,y:36.1190864503,count:70},
  104. {name:"成都",x:104.035508297,y:30.7141790950,count:90},
  105. {name:"重庆",x:106.519115206,y:29.4789248520,count:60},
  106. {name:"贵阳",x:106.668071385,y:26.4573115457,count:20}];
  107. var features = new Array();
  108. for (var i=0; i<data.length; i++) {
  109. features[i] = new OpenLayers.Feature.Vector(
  110. new OpenLayers.Geometry.Point(data[i].x, data[i].y),
  111. {
  112. count:data[i].count,
  113. name:data[i].name
  114. }
  115. );
  116. }
  117. var clusterLayer = new OpenLayers.Layer.Vector("Points", {
  118. styleMap: new OpenLayers.StyleMap(style)
  119. });
  120. clusterLayer.addFeatures(features);
  121. map1.addLayer(clusterLayer);
  122. }
  123. </script>
  124. </head>
  125. <body>
  126. <div id="map1"></div>
  127. </body>
  128. </html>

转载于:https://www.cnblogs.com/telwanggs/p/6972851.html

(转)基于openlayers实现聚类统计展示相关推荐

  1. 基于openlayers实现聚类统计展示

    概述: 在前面的博文中讲述过基于Arcgis for js如何实现聚类统计展示,在本文中讲述如何基于openlayers实现聚类统计的效果,Arcgis for js聚类统计的博文地址为: http: ...

  2. 基于改进K-means聚类和隐马尔可夫链的汽车行驶工况构建

    摘 要: 汽车行驶工况的构建对于车辆能耗.排放测试,以及汽车性能指标优化有着重要意义.而欧洲NEDC工况.世界WLTC工况等为基准的行驶工况构建并不完全适用我国汽车行驶工况的构建,基于此,制定反映我国 ...

  3. 基于密度的聚类算法(3)——DPC详解

    基于密度的聚类算法(1)--DBSCAN详解 基于密度的聚类算法(2)--OPTICS详解 基于密度的聚类算法(3)--DPC详解 1. DPC简介 2014年,一种新的基于密度的聚类算法被提出,且其 ...

  4. 基于网格的聚类算法STING

    基于网格的聚类算法STING STING方法简介 ① 全称 : STING , Statistical Information Grid , 统计信息网格 , 是一种 多分辨率聚类技术 ; ② 划分方 ...

  5. 【数据挖掘】基于方格的聚类方法 ( 概念 | STING 方法 | CLIQUE 方法 )

    文章目录 I . 基于方格的聚类方法 简介 II . 基于方格的聚类方法 图示 III . STING 方法 IV . CLIQUE 方法 I . 基于方格的聚类方法 简介 1 . 基于方格的聚类方法 ...

  6. 【数据挖掘】聚类算法 简介 ( 基于划分的聚类方法 | 基于层次的聚类方法 | 基于密度的聚类方法 | 基于方格的聚类方法 | 基于模型的聚类方法 )

    文章目录 I . 聚类主要算法 II . 基于划分的聚类方法 III . 基于层次的聚类方法 IV . 聚合层次聚类 图示 V . 划分层次聚类 图示 VI . 基于层次的聚类方法 切割点选取 VII ...

  7. 《异构信息网络挖掘: 原理和方法(1)》一第2章 基于排名的聚类

    本节书摘来自华章出版社<异构信息网络挖掘: 原理和方法(1)>一书中的第2章,作者[美]孙艺洲(Yizhou Sun)韩家炜(Jiawei Han),更多章节内容可以访问云栖社区" ...

  8. 基于threejs的商品VR展示平台的设计与实现思路

    目录 基于threejs的商品VR展示平台的设计与实现思路 前言 总体开发方案设计 总体开发设计思维导图 模型制作模块 前端展示模块 存储模块 后端管理模块 后台管理实现 商品模型制作 商品模型前期准 ...

  9. 聚类之层次聚类、基于划分的聚类(…

    5.聚类之层次聚类.基于划分的聚类(k-means).基于密度的聚类.基于模型的聚类 目录(?)[-] 1.      一层次聚类 1.      层次聚类的原理及分类 2.      层次聚类的流程 ...

最新文章

  1. 利用graphviz模块展示斐波那契数列的递归函数调用图(Python)
  2. C语言 递归求阶乘和
  3. Prism4文档翻译(第四章 第一部分) 转载bluesky234
  4. oracle创建函数语句,Oracle 创建函数与存储过程语句积累
  5. 一直在构建工作空间_大华股份殷俊:AI,构建数字世界的基础
  6. c++中类型用new和不用new的区别
  7. android 启动一个应用,android 在一个应用中启动另一个应用
  8. 智能优化算法:算术优化算法-附代码
  9. 181221每日一句
  10. SPSS教程—实现多层感知器神经网络
  11. 「插件」Runner更新Pro版,帮助设计师远离996
  12. 三通短信每月发送量导入Sqlserver随笔
  13. 密钥分发中心KDC 对称密钥分发中心 P112
  14. 怎么检查计算机硬盘有没有供电,终于知道电脑硬件怎样全部检测
  15. 【多轮对话】任务型多轮对话数据集和采集方法
  16. 免费地图制作软件,在线做地图的平台推荐
  17. 国际市场营销知识框架图_留学热门丨伦敦里士满大学市场营销本科专业
  18. Shiro-02-subject与session
  19. 树莓派摄像头在桌面不显示 | 树莓派VNC摄像头实时显示
  20. r语言nonzerocoef函数_lars算法R语言操作指南.pdf

热门文章

  1. 【Pre蓝桥杯嵌入式】如何直接使用LCD例程来作为赛场使用的工程
  2. 【C语言】qsort函数用法(转)
  3. magento 优化 php.ini,PHP.ini配置文件(中文) | Magento UI
  4. linux下的网桥介绍
  5. ROS 教程之 network:多台计算机之间网络通信(2)
  6. php添加自定义头部关键字,WordPress主题制作中自定义头部的相关PHP函数解析
  7. android camera 动画,Android 使用Camera创建3D动画
  8. lammps计算聚合物例子_LAMMPS中的系综(NPT/NVT)命令
  9. 【重难点】【RabbitMQ 02】如何避免消息重复投递和消息重复消费、如何防止消息丢失、如何保证消息的顺序性、如何保证消息队列的可用性
  10. Java面试之锁-公平锁和非公平锁