vizLayer_utfGridLayer.html 4.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124
  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_utfGridLayer"></title>
  9. <script type="text/javascript" include="bootstrap" src="../js/include-web.js"></script>
  10. <script type="text/javascript" exclude="iclient-classic" src="../../dist/classic/include-classic.js"></script>
  11. <style type="text/css">
  12. body {
  13. margin: 0;
  14. overflow: hidden;
  15. background: #fff;
  16. width: 100%;
  17. height: 100%
  18. }
  19. #map {
  20. position: absolute;
  21. width: 100%;
  22. height: 100%;
  23. }
  24. </style>
  25. </head>
  26. <body>
  27. <div id="map"></div>
  28. <script>
  29. var map, infowin, layer, utfgrid, control,
  30. host = window.isLocal ? window.server : "https://iserver.supermap.io",
  31. url = host + "/iserver/services/map-china400/rest/maps/China";
  32. init();
  33. function init() {
  34. map = new SuperMap.Map("map", {
  35. controls: [
  36. new SuperMap.Control.ScaleLine(),
  37. new SuperMap.Control.Zoom(),
  38. new SuperMap.Control.LayerSwitcher(),
  39. new SuperMap.Control.Navigation({
  40. dragPanOptions: {
  41. enableKinetic: true
  42. }
  43. })],
  44. projection: "EPSG:3857"
  45. });
  46. layer = new SuperMap.Layer.TiledDynamicRESTLayer("China", url, {transparent: true}, {
  47. useCanvas: true,
  48. maxResolution: "auto"
  49. });
  50. //注意:pixcell与utfgridResolution两个属性有对应关系,在使用的时候也要注意场景;
  51. //1.其中pixcell为发送给服务端请求utfgrid瓦片的精度,数值越小,精度越高,相应的瓦片大小也就越大;
  52. //2.utfgridResolution为客户端解析瓦片使用的精度,应该与pixcell的值相等,否则会产生位置与属性对应不上的问题;
  53. //3.通常如果UTFGrid图层为面图层,对应的数据量会比较大,为了不影响页面的正常浏览,可以将这两个属性设的大一些;
  54. //4.isUseCache设置是否使用缓存,使用缓存能够提高性能;
  55. utfgrid = new SuperMap.Layer.UTFGrid("UTFGridLayer", url,
  56. {
  57. layerName: "China_Province_pl@China",
  58. utfTileSize: 256,
  59. pixcell: 8,
  60. isUseCache: true
  61. },
  62. {
  63. utfgridResolution: 8
  64. });
  65. layer.events.on({"layerInitialized": addLayer});
  66. }
  67. var callback = function (infoLookup, loc, pixel) {
  68. closeInfoWin();
  69. if (infoLookup) {
  70. var info;
  71. for (var idx in infoLookup) {
  72. info = infoLookup[idx];
  73. if (info && info.data) {
  74. var dom = "<div style='font-size: 12px; color: #000000;'>" + info.data.NAME + "</div>";
  75. //设置x与y的像素偏移量,不影响地图浏览;
  76. var xOff = (1 / map.getScale()) * 0.001;
  77. var yOff = -(1 / map.getScale()) * 0.005;
  78. var pos = new SuperMap.LonLat(loc.lon + xOff, loc.lat + yOff);
  79. infowin = new SuperMap.Popup("chicken",
  80. pos,
  81. new SuperMap.Size(100, 20),
  82. dom,
  83. false, null);
  84. infowin.autoSize = true;
  85. map.addPopup(infowin);
  86. }
  87. }
  88. }
  89. };
  90. function closeInfoWin() {
  91. if (infowin) {
  92. try {
  93. map.removePopup(infowin)
  94. }
  95. catch (e) {
  96. }
  97. }
  98. }
  99. function addLayer() {
  100. var center = new SuperMap.LonLat(11733502.481499, 4614406.969325);
  101. map.addLayers([layer, utfgrid]);
  102. map.setCenter(center, 5);
  103. control = new SuperMap.Control.UTFGrid({
  104. layers: [utfgrid],
  105. callback: callback,
  106. handlerMode: "move"
  107. });
  108. map.addControl(control);
  109. }
  110. </script>
  111. </body>
  112. </html>