Guest User

Untitled

a guest
Jul 20th, 2018
107
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 6.73 KB | None | 0 0
  1. import { no_base_map } from './maps/no_base_map';
  2. import { fulldark_map } from './maps/fulldark_map';
  3. import { hibrid_map } from './maps/hibrid_map';
  4. import { icgc_map } from './maps/icgc_map';
  5. import { night_map } from './maps/night_map';
  6. import { osm_map } from './maps/osm_map';
  7. import { positron_map } from './maps/positron_map';
  8. import { satellite_hibrid } from './maps/satellite_hibrid';
  9.  
  10. import mapboxgl from 'mapbox-gl';
  11.  
  12. var axisMap = {
  13.  
  14. addMap: function(id:String, target:String) {
  15. sendRequest(id)
  16. .then( (data) => {
  17. console.log(data);
  18. // Create Map
  19. return createMap(data, target);
  20. })
  21. .then( (info) => {
  22. // Add Controls
  23. addControls(info.map);
  24. return info;
  25. })
  26. .then( (info) => {
  27. // Add Layers
  28. addLayers(info.map, info.layers);
  29. })
  30. .catch( (err) => {
  31. console.log('Error: ', err);
  32. });
  33. }
  34. };
  35.  
  36. function sendRequest(id:String) {
  37. return new Promise( (resolve, reject) => {
  38. var url = 'http://localhost:8080/map/' + id;
  39. console.log('url: ', url);
  40. fetch(url)
  41. .then( (res) => res.json())
  42. .then( (data) => {
  43. console.log('data server: ', data);
  44. if (data.ok) {
  45. resolve(data.map);
  46. } else {
  47. reject(data.error);
  48. }
  49. })
  50. .catch( (err) => {
  51. reject(err);
  52. });
  53. });
  54. };
  55.  
  56. function createMap(info:any, target:String) {
  57. var base = String(info.base); // info.base = 'nobase'
  58. var lat = Number(info.lat);
  59. var lng = Number(info.lng);
  60. var zoom = Number(info.zoom);
  61. var layers = info.wmslayers;
  62.  
  63. mapboxgl.accessToken = 'my_access_token';
  64.  
  65. var map = new mapboxgl.Map({
  66. container: String(target), // container id
  67. style: String(getBaseMap(base)), // stylesheet location
  68. center: [lng, lat], // starting position [lng, lat]
  69. zoom: zoom // starting zoom
  70. });
  71.  
  72. return { map: map, layers: layers };
  73. };
  74.  
  75. function addControls(map:any) {
  76. navigationControl(map);
  77. addScaleControl(map);
  78. addLocationControl(map);
  79. };
  80.  
  81. function navigationControl(map:any) {
  82. var nav = new mapboxgl.NavigationControl();
  83. map.addControl(nav, 'top-right');
  84. };
  85.  
  86. function addScaleControl(map:any) {
  87. var scale = new mapboxgl.ScaleControl({
  88. maxWidth: 80,
  89. unit: 'metric'
  90. });
  91. map.addControl(scale);
  92. };
  93.  
  94. function addLocationControl(map:any) {
  95. map.addControl(new mapboxgl.GeolocateControl({
  96. positionOptions: {
  97. enableHighAccuracy: true,
  98. timeout: 300
  99. },
  100. trackUserLocation: true
  101. }));
  102. };
  103.  
  104. function addLayers(map:any, layers:any) {
  105. if (layers.length > 0) {
  106. layers.reverse().forEach( (layer:any) => {
  107.  
  108. map.on('load', function() {
  109. map.addLayer({
  110. 'id': String(layer.keyName), 'type': 'raster',
  111. 'source': { 'type': 'raster', 'tiles': [ createUrl(layer) ], 'tileSize': 256 }
  112. });
  113. });
  114.  
  115. });
  116. }
  117. };
  118.  
  119. function createUrl(layer:any) {
  120. var fullUrl;
  121. if (!layer.hasFilter) {
  122. fullUrl = `${layer.url}bbox={bbox-epsg-3857}&format=${layer.format}&styles=${layer.styles}&transparent=true&service=WMS&version=${layer.version}&request=GetMap&${(layer.version.localeCompare('1.3.0') === 0) ? 'crs' : 'srs' }=EPSG:3857&width=256&height=256&layers=${layer.layers}&map=${layer.aditionals}`;
  123. } else {
  124. fullUrl = `${layer.url}bbox={bbox-epsg-3857}&format=${layer.format}&styles=${layer.styles}&transparent=true&service=WMS&version=${layer.version}&request=GetMap&${(layer.version.localeCompare('1.3.0') === 0) ? 'crs' : 'srs' }=EPSG:3857&width=256&height=256&layers=${layer.layers}&map=${layer.aditionals}&CQL_FILTER=${layer.code}='${layer.filter}'`;
  125. }
  126. return fullUrl;
  127. };
  128.  
  129. function getBaseMap(name:String) {
  130.  
  131. switch(name) {
  132. case 'openstreetmaps': return osm_map;
  133. case 'icgc': return icgc_map;
  134. case 'positron': return positron_map;
  135. case 'fulldark': return fulldark_map;
  136. case 'night': return night_map;
  137. case 'hibrid': return hibrid_map;
  138. case 'nobase': return no_base_map;
  139. case 'hibrid': return satellite_hibrid;
  140. default:
  141. return no_base_map;
  142. }
  143.  
  144. };
  145.  
  146. <!DOCTYPE html>
  147. <html>
  148. <head>
  149. <meta charset='utf-8' />
  150. <title>Map Generator</title>
  151. <meta name='viewport' content='initial-scale=1,maximum-scale=1,user-scalable=no' />
  152. <script src='js/index.js'></script>
  153. <script src='https://api.tiles.mapbox.com/mapbox-gl-js/v0.46.0/mapbox-gl.js'></script>
  154. <link href='https://api.tiles.mapbox.com/mapbox-gl-js/v0.46.0/mapbox-gl.css' rel='stylesheet' />
  155. <style>
  156. body { margin:0; padding:0; }
  157. #map { position:absolute; top:0; bottom:0; width:50%; height: 50%; }
  158. </style>
  159. </head>
  160. <body>
  161. <div id="map"></div>
  162. <script>
  163.  
  164. axisMap.addMap("5b4f12233cfb101f4c2d0537", "map");
  165. </script>
  166. </body>
  167. </html>
  168.  
  169. "use strict";
  170. var __importDefault = (this && this.__importDefault) || function (mod) {
  171. return (mod && mod.__esModule) ? mod : { "default": mod };
  172. };
  173. Object.defineProperty(exports, "__esModule", { value: true });
  174. const no_base_map_1 = require("./maps/no_base_map");
  175. const fulldark_map_1 = require("./maps/fulldark_map");
  176. const hibrid_map_1 = require("./maps/hibrid_map");
  177. const icgc_map_1 = require("./maps/icgc_map");
  178. const night_map_1 = require("./maps/night_map");
  179. const osm_map_1 = require("./maps/osm_map");
  180. const positron_map_1 = require("./maps/positron_map");
  181. const satellite_hibrid_1 = require("./maps/satellite_hibrid");
  182. const mapbox_gl_1 = __importDefault(require("mapbox-gl"));
  183. var axisMap = {
  184. addMap: function (id, target) {
  185. sendRequest(id)
  186. .then((data) => {
  187. console.log(data);
  188. // Create Map
  189. return createMap(data, target);
  190. })
  191. .then((info) => {
  192. // Add Controls
  193. addControls(info.map);
  194. return info;
  195. })
  196. .then((info) => {
  197. // Add Layers
  198. addLayers(info.map, info.layers);
  199. })
  200. .catch((err) => {
  201. console.log('Error: ', err);
  202. });
  203. }
  204. };
  205. function sendRequest(id) {
  206. return new Promise((resolve, reject) => {
  207. var url = 'http://localhost:8080/map/' + id;
  208. console.log('url: ', url);
  209. fetch(url)
  210. .then((res) => res.json())
  211. .then((data) => {
  212. console.log('data server: ', data);
  213. if (data.ok) {
  214. resolve(data.map);
  215. }
  216. else {
  217. reject(data.error);
  218. }
  219. })
  220. .catch((err) => {
  221. reject(err);
  222. });
  223. });
  224. }
  225. ;
  226. ....
Add Comment
Please, Sign In to add comment