dragFeatures.html 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103
  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_dragFeatures"></title>
  9. <script type="text/javascript" src="../../dist/ol/include-ol.js"></script>
  10. <style>
  11. .ol-popup {
  12. position: absolute;
  13. top: 50px;
  14. right: 20px;
  15. }
  16. </style>
  17. </head>
  18. <body style=" margin: 0;overflow: hidden;background: #fff;width: 100%;height:100%;position: absolute;top: 0;">
  19. <div id="map" style="width: 100%;height:100%"></div>
  20. <div id="popup" class="ol-popup">
  21. <div class="btn-group" role="group" aria-label="...">
  22. <button id="drag" value='Drag' type="button" class="btn btn-default" data-i18n="resources.btn_drag"></button>
  23. <button id="none" value='None' type="button" class="btn btn-default" data-i18n="resources.text_input_value_notDrag"></button>
  24. </div>
  25. </div>
  26. <script type="text/javascript" include="jquery,bootstrap" src="../js/include-web.js"></script>
  27. <script type="text/javascript">
  28. var map, select, drag, source,
  29. baseUrl = (window.isLocal ? window.server : "https://iserver.supermap.io") + "/iserver/services/map-world/rest/maps/World",
  30. url = (window.isLocal ? window.server : "https://iserver.supermap.io") + "/iserver/services/data-world/rest/data";
  31. map = new ol.Map({
  32. target: 'map',
  33. controls: ol.control.defaults({attributionOptions: {collapsed: false}})
  34. .extend([new ol.supermap.control.Logo()]),
  35. view: new ol.View({
  36. center: [116, 30],
  37. zoom: 4,
  38. projection: 'EPSG:4326',
  39. multiWorld: true
  40. })
  41. });
  42. var layer = new ol.layer.Tile({
  43. source: new ol.source.TileSuperMapRest({
  44. url: baseUrl,
  45. wrapX: true
  46. }),
  47. projection: 'EPSG:4326'
  48. });
  49. map.addLayer(layer);
  50. var sqlParam = new SuperMap.GetFeaturesBySQLParameters({
  51. queryParameter: {
  52. name: "Countries@World",
  53. attributeFilter: "SMID = 247"
  54. },
  55. datasetNames: ["World:Countries"]
  56. });
  57. new ol.supermap.FeatureService(url).getFeaturesBySQL(sqlParam, function (serviceResult) {
  58. source = new ol.source.Vector({
  59. features: (new ol.format.GeoJSON()).readFeatures(serviceResult.result.features),
  60. wrapX: false
  61. });
  62. map.addLayer(new ol.layer.Vector({
  63. source: source
  64. }));
  65. });
  66. var info = new ol.control.Control({element: document.getElementById('popup')});
  67. info.setMap(map);
  68. map.addControl(info);
  69. var buttons = $('.btn-group').children();
  70. buttons.map(function (key) {
  71. var value = buttons[key].value;
  72. if (value === 'None') {
  73. $(buttons[key]).on('click', function () {
  74. clearInteraction();
  75. });
  76. return;
  77. }
  78. $(buttons[key]).on('click', function () {
  79. clearInteraction();
  80. select = new ol.interaction.Select({
  81. wrapX: false
  82. });
  83. drag = new ol.interaction.Translate({
  84. features: select.getFeatures()
  85. });
  86. map.addInteraction(select);
  87. map.addInteraction(drag);
  88. });
  89. });
  90. function clearInteraction() {
  91. if (drag) {
  92. map.removeInteraction(drag);
  93. }
  94. if (select) {
  95. map.removeInteraction(select);
  96. }
  97. }
  98. </script>
  99. </body>
  100. </html>