rankSymbolThemeLayer.html 5.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138
  1. <!--********************************************************************
  2. * Copyright© 2000 - 2021 SuperMap Software Co.Ltd. All rights reserved.
  3. *********************************************************************-->
  4. <!DOCTYPE html>
  5. <html lang="en-US">
  6. <head>
  7. <meta charset="UTF-8">
  8. <meta http-equiv="X-UA-Compatible" content="IE=Edge">
  9. <meta name="viewport" content="initial-scale=1.0, user-scalable=no, width=device-width">
  10. <title data-i18n="resources.text_graduatedSymbol"></title>
  11. <style>
  12. body, #map {
  13. position: absolute;
  14. width: 100%;
  15. height: 100%
  16. }
  17. </style>
  18. <script type="text/javascript" src="../data/chinaConsumptionLevel.js"></script>
  19. </head>
  20. <body style=" margin: 0;overflow: hidden;background: #fff;width: 100%;height:100%;position: absolute;top: 0;">
  21. <div id="map" style="margin:0 auto;width: 100%;height: 100%"></div>
  22. <script type="text/javascript" include="bootstrap" src="../js/include-web.js"></script>
  23. <script type="text/javascript" src="../../dist/mapboxgl/include-mapboxgl.js"></script>
  24. <script type="text/javascript">
  25. var themeLayer, popup,
  26. url = (window.isLocal ? window.server : "https://iserver.supermap.io") + "/iserver/services/map-china400/rest/maps/China_4326";
  27. var attribution = "<a href='https://www.mapbox.com/about/maps/' target='_blank'>© Mapbox </a>" +
  28. " with <span>© <a href='https://iclient.supermap.io' target='_blank'>SuperMap iClient</a> | </span>" +
  29. " Map Data <span>© <a href='http://support.supermap.com.cn/product/iServer.aspx' target='_blank'>SuperMap iServer</a></span> ";
  30. var map = new mapboxgl.Map({
  31. container: 'map',
  32. style: {
  33. "version": 8,
  34. "sources": {
  35. "raster-tiles": {
  36. "attribution": attribution,
  37. "type": "raster",
  38. "tiles": [url + '/zxyTileImage.png?z={z}&x={x}&y={y}'],
  39. "tileSize": 256,
  40. },
  41. },
  42. "layers": [{
  43. "id": "simple-tiles",
  44. "type": "raster",
  45. "source": "raster-tiles",
  46. "minzoom": 0,
  47. "maxzoom": 22
  48. }]
  49. },
  50. center: [116.85, 39.79],
  51. zoom: 3
  52. });
  53. map.addControl(new mapboxgl.NavigationControl(), 'top-left');
  54. map.addControl(new mapboxgl.supermap.LogoControl(), 'bottom-right');
  55. var features = [];
  56. for (var i = 0, len = chinaConsumptionLevel.length; i < len; i++) {
  57. // 省居民消费水平(单位:元)信息
  58. var provinceInfo = chinaConsumptionLevel[i];
  59. var geo = new mapboxgl.LngLat(provinceInfo[1], provinceInfo[2]);
  60. var attrs = {};
  61. attrs.NAME = provinceInfo[0];
  62. attrs.CON2009 = provinceInfo[3];
  63. var fea = new mapboxgl.supermap.ThemeFeature(geo, attrs);
  64. features.push(fea);
  65. }
  66. addThemeLayer();
  67. themeLayer.addFeatures(features);
  68. function addThemeLayer() {
  69. themeLayer = new mapboxgl.supermap.RankSymbolThemeLayer("RankSymbolLayer", "Circle",
  70. {
  71. // map: map,//该可选参数将在下个版本遗弃
  72. attributions: " ",
  73. themeField: "CON2009",
  74. // 配置图表参数
  75. symbolSetting: {
  76. //必设参数
  77. codomain: [0, 40000], // 允许图形展示的值域范围,此范围外的数据将不制作图图形
  78. //圆最大半径 默认100
  79. maxR: 100,
  80. //圆最小半径 默认0
  81. minR: 0,
  82. // 圆形样式
  83. circleStyle: {fillOpacity: 0.8},
  84. // 符号专题图填充颜色
  85. fillColor: "#FFA500",
  86. // 专题图hover 样式
  87. circleHoverStyle: {fillOpacity: 1}
  88. }
  89. });
  90. map.addLayer(themeLayer);
  91. //专题图层 mousemove 事件
  92. themeLayer.on('mousemove', showInfoWin);
  93. }
  94. function showInfoWin(e) {
  95. // e.target 是图形对象,即数据的可视化对象。
  96. // 图形对象的 refDataID 属性是数据(feature)的 id 属性,它指明图形对象是由那个数据制作而来;
  97. // 图形对象的 dataInfo 属性是图形对象表示的具体数据,他有两个属性,field、R 和 value;
  98. if (e.target && e.target.refDataID && e.target.dataInfo) {
  99. closeInfoWin();
  100. // 获取图形对应的数据 (feature)
  101. var fea = themeLayer.getFeatureById(e.target.refDataID);
  102. var info = e.target.dataInfo;
  103. // 弹窗内容
  104. var contentHTML = "<div style='color: #000; background-color: #fff'>";
  105. contentHTML += resources.text_Name + "<br><strong>" + fea.attributes.NAME + "</strong>";
  106. contentHTML += "<hr style='margin: 3px'>";
  107. switch (info.field) {
  108. case "CON2009":
  109. contentHTML += resources.text_consumptionLevel1 + "09" + resources.text_consumptionLevel2 + " <br/><strong>" + info.value + "</strong>(" + resources.text_yuan + ")";
  110. break;
  111. default:
  112. contentHTML += "No Data";
  113. }
  114. contentHTML += "</div>";
  115. var tempPoint = map.unproject(new window.mapboxgl.Point(e.event.x, e.event.y));
  116. popup = new mapboxgl.Popup({closeOnClick: false})
  117. .setLngLat([tempPoint.lng, tempPoint.lat])
  118. .setHTML(contentHTML)
  119. .addTo(map);
  120. return;
  121. }
  122. closeInfoWin();
  123. }
  124. // 移除地图弹窗
  125. function closeInfoWin() {
  126. if (popup) {
  127. popup.remove(map);
  128. }
  129. }
  130. </script>
  131. </body>
  132. </html>