d3UniqueThemeLayer.html 6.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125
  1. <!--********************************************************************
  2. * Copyright© 2000 - 2021 SuperMap Software Co.Ltd. All rights reserved.
  3. *********************************************************************-->
  4. <!DOCTYPE html>
  5. <html>
  6. <head>
  7. <meta charset="UTF-8">
  8. <title data-i18n="resources.title_UniqueThemeLayer"></title>
  9. <script type="text/javascript" include="jquery,bootstrap" src="../js/include-web.js"></script>
  10. <script type="text/javascript" include="d3,d3Layer" src="../../dist/leaflet/include-leaflet.js"></script>
  11. <style type="text/css">
  12. .legendItemHeader,
  13. .legendItemValue {
  14. width: 120px;
  15. height: 18px;
  16. font-size: 14px;
  17. }
  18. </style>
  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">
  23. var host = window.isLocal ? window.server : "https://iserver.supermap.io";
  24. var map, resultLayer,
  25. baseUrl = host + "/iserver/services/map-jingjin/rest/maps/京津地区地图",
  26. url = host + "/iserver/services/data-jingjin/rest/data";
  27. map = L.map('map', {
  28. preferCanvas: true,
  29. crs: L.CRS.EPSG4326,
  30. center: [39.79, 116.85],
  31. maxZoom: 18,
  32. zoom: 7
  33. });
  34. L.supermap.tiledMapLayer(baseUrl).addTo(map);
  35. query();
  36. var uniqueMap = {
  37. "草地": "rgb(193,255,193)",
  38. "城市": "rgb(205,112,84)",
  39. "灌丛": "rgb(124,205,124)",
  40. "旱地": "rgb(238,154,73)",
  41. "湖泊水库": "rgb(142,229,238)",
  42. "经济林": "rgb(222,184,135)",
  43. "水浇地": "rgb(224,255,255)",
  44. "水田": "rgb(56,142,142)",
  45. "用材林": "rgb(85,107,47)",
  46. "沼泽": "rgb(47,79,79)",
  47. "缺省风格": "rgb(171,171,171)"
  48. };
  49. function query() {
  50. var sqlParam = new SuperMap.GetFeaturesBySQLParameters({
  51. queryParameter: {
  52. name: "Landuse_R@Jingjin",
  53. attributeFilter: "SMID > -1"
  54. },
  55. datasetNames: ["Jingjin:Landuse_R"],
  56. fromIndex: 0,
  57. toIndex: 200
  58. });
  59. L.supermap.featureService(url).getFeaturesBySQL(sqlParam, function (serviceResult) {
  60. var d3Layer = L.supermap.d3Layer(function (sel, proj) {
  61. var upd = sel.selectAll('path').data(serviceResult.result.features.features);
  62. upd.enter()
  63. .append('path')
  64. .attr('d', proj.pathFromGeojson)
  65. .attr('fill', function (feature) {
  66. return uniqueMap[feature.properties.LANDTYPE];
  67. })
  68. .attr('fill-opacity', '0.8');
  69. sel.on('mousemove', function () {
  70. });
  71. });
  72. d3Layer.addTo(map);
  73. initLegendView();
  74. });
  75. }
  76. //图例控件
  77. function initLegendView() {
  78. var legendView = L.control({position: 'bottomright'});
  79. legendView.onAdd = function () {
  80. this._div = L.DomUtil.create('div', 'panel panel-primary legend ');
  81. var title = "<div class='panel-heading'><h5 class='panel-title text-center'>" + resources.text_legend + "</h5></div>";
  82. $(title + "<div class='panel-body text-left' ><table>" +
  83. "<tr><td class='legendItemHeader'>" + resources.text_landType + "</td><td class='legendItemValue'>" + resources.text_color + "</td></tr>" +
  84. "<tr> <td class='legendItemHeader' >" + resources.text_grassland + "</td> <td class='legendItemValue' style='background: #C1FFC1'></td></tr>" +
  85. "<tr> <td class='legendItemHeader'>" + resources.text_city + "</td> <td class='legendItemValue' style='background: #CD7054'></td> </tr>" +
  86. "<tr> <td class='legendItemHeader'>" + resources.text_shrub + "</td> <td class='legendItemValue' style='background: #7CCD7C'></td> </tr>" +
  87. "<tr> <td class='legendItemHeader'>" + resources.text_dryLand + "</td> <td class='legendItemValue' style='background: #EE9A49'></td> </tr>" +
  88. "<tr> <td class='legendItemHeader'>" + resources.text_lakeReservoir + "</td> <td class='legendItemValue' style='background: #8EE5EE'></td> </tr>" +
  89. "<tr> <td class='legendItemHeader'>" + resources.text_economicForest + "</td> <td class='legendItemValue' style='background: #548B54'></td> </tr>" +
  90. "<tr><td class='legendItemHeader'>" + resources.text_desert + "</td> <td class='legendItemValue' style='background: #DEB887'></td> </tr>" +
  91. "<tr><td class='legendItemHeader'>" + resources.text_irrigatedLand + "</td> <td class='legendItemValue' style='background: #E0FFFF'></td> </tr>" +
  92. "<tr><td class='legendItemHeader'>" + resources.text_paddyField + "</td> <td class='legendItemValue' style='background: #388E8E'></td> </tr>" +
  93. "<tr> <td class='legendItemHeader'>" + resources.text_timberForest + "</td> <td class='legendItemValue' style='background: #556B2F'></td> </tr>" +
  94. "<tr> <td class='legendItemHeader'>" + resources.text_swamp + "</td> <td class='legendItemValue' style='background: #2F4F4F'></td> </tr>" +
  95. "<tr> <td class='legendItemHeader'>" + resources.text_DefaultStyle + "</td> <td class='legendItemValue' style='background: #ABABAB'></td> </tr>" +
  96. "</table></div>"
  97. ).appendTo(this._div);
  98. handleMapEvent(this._div, this._map);
  99. return this._div;
  100. };
  101. legendView.addTo(map);
  102. }
  103. function handleMapEvent(div, map) {
  104. if (!div || !map) {
  105. return;
  106. }
  107. div.addEventListener('mouseover', function () {
  108. map.dragging.disable();
  109. map.scrollWheelZoom.disable();
  110. map.doubleClickZoom.disable();
  111. });
  112. div.addEventListener('mouseout', function () {
  113. map.dragging.enable();
  114. map.scrollWheelZoom.enable();
  115. map.doubleClickZoom.enable();
  116. });
  117. }
  118. </script>
  119. </body>
  120. </html>