mapVLayerForceEdgeBunding.html 4.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129
  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_mapvForceEdge"></title>
  9. <script type="text/javascript" src="../js/include-web.js"></script>
  10. </head>
  11. <body style=" margin: 0;overflow: hidden;background: #fff;width: 100%;height:100%;position: absolute;top: 0;">
  12. <div id="map" style="margin:0 auto;width: 100%;height: 100%"></div>
  13. <script type="text/javascript" include="mapv" src="../../dist/leaflet/include-leaflet.js"></script>
  14. <script type="text/javascript">
  15. var map = L.map('map', {
  16. center: [36.64, 108.15],
  17. zoom: 4,
  18. });
  19. var host = window.isLocal ? window.server : "https://iserver.supermap.io";
  20. var url = host + "/iserver/services/map-china400/rest/maps/ChinaDark";
  21. L.supermap.tiledMapLayer(url).addTo(map);
  22. loadData();
  23. //示例数据来源为百度MapV的加偏数据,iClient未做纠偏处理
  24. function loadData() {
  25. var randomCount = 500;
  26. var node_data = {
  27. "0": {"x": 108.154518, "y": 36.643346},
  28. "1": {"x": 121.485124, "y": 31.235317},
  29. };
  30. var edge_data = [
  31. {"source": "1", "target": "0"}
  32. ];
  33. var citys = ["北京", "天津", "上海", "重庆", "石家庄", "太原", "呼和浩特",
  34. "哈尔滨", "长春", "沈阳", "济南", "南京", "合肥", "杭州", "南昌", "福州",
  35. "郑州", "武汉", "长沙", "广州", "南宁", "西安", "银川", "兰州", "西宁",
  36. "乌鲁木齐", "成都", "贵阳", "昆明", "拉萨", "海口"
  37. ];
  38. //自定义数据
  39. for (var i = 1; i < randomCount; i++) {
  40. var cityCenter = mapv.utilCityCenter.getCenterByCityName(citys[parseInt(Math.random() * citys.length)]);
  41. node_data[i] = {
  42. x: cityCenter.lng - 5 + Math.random() * 10,
  43. y: cityCenter.lat - 5 + Math.random() * 10,
  44. }
  45. edge_data.push(
  46. {"source": ~~(i * Math.random()), "target": '0'}
  47. );
  48. }
  49. var fbundling = mapv.utilForceEdgeBundling().nodes(node_data).edges(edge_data);
  50. var results = fbundling();
  51. var data = [];
  52. var timeData = [];
  53. for (var i = 0; i < results.length; i++) {
  54. var line = results[i];
  55. var coordinates = [];
  56. for (var j = 0; j < line.length; j++) {
  57. coordinates.push([line[j].x, line[j].y]);
  58. timeData.push({
  59. geometry: {
  60. type: 'Point',
  61. coordinates: [line[j].x, line[j].y]
  62. },
  63. count: 1,
  64. time: j
  65. });
  66. }
  67. data.push({
  68. geometry: {
  69. type: 'LineString',
  70. coordinates: coordinates
  71. }
  72. });
  73. }
  74. //创建MapV图层
  75. var dataSet1 = new mapv.DataSet(data);
  76. var options1 = {
  77. strokeStyle: 'rgba(55, 50, 250, 0.3)',
  78. globalCompositeOperation: 'lighter',
  79. shadowColor: 'rgba(55, 50, 250, 0.5)',
  80. shadowBlur: 10,
  81. methods: {
  82. click: function (item) {
  83. }
  84. },
  85. lineWidth: 1.0,
  86. draw: 'simple'
  87. };
  88. L.supermap.mapVLayer(dataSet1, options1).addTo(map);
  89. //创建MapV图层
  90. var dataSet2 = new mapv.DataSet(timeData);
  91. var options2 = {
  92. fillStyle: 'rgba(255, 250, 250, 0.9)',
  93. globalCompositeOperation: 'lighter',
  94. size: 1.5,
  95. animation: {
  96. type: 'time',
  97. stepsRange: {
  98. start: 0,
  99. end: 100
  100. },
  101. trails: 1,
  102. duration: 5,
  103. },
  104. draw: 'simple'
  105. };
  106. L.supermap.mapVLayer(dataSet2, options2).addTo(map);
  107. setTimeout(function () {
  108. map.openPopup(resources.text_iClient, map.getCenter());
  109. }, 1000)
  110. }
  111. </script>
  112. </body>
  113. </html>