cartodbParse.js 2.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  1. /**
  2. * @fileoverview cartodb viz.json 解析
  3. * @author Song.Huang
  4. * @version 1.0.0
  5. */
  6. define(function() {
  7. var cartodbParse = function() {
  8. /**
  9. * [getVizInfo description]
  10. * @param {[type]} options [description]
  11. * @param {[type]} callbackFunc [description]
  12. * options.vizUrl = 'http://imhuangsong.carto.com/api/v2/viz/81a3f750-f60f-11e5-8817-0e3ff518bd15/viz.json'
  13. */
  14. this.getVizInfo = function(options, callbackFunc) {
  15. ONEMAP.V.loading.load();
  16. $.ajax({
  17. url: options.vizUrl,
  18. type: 'GET',
  19. dataType: 'jsonp'
  20. })
  21. .done(function(data) {
  22. ONEMAP.V.loading.loaded();
  23. ONEMAP.V.loading.load();
  24. var domainParse = options.vizUrl.split('/');
  25. var dPort = domainParse[2].split(':');
  26. var ajaxUrl = domainParse[0]+'//'+dPort[0]+'/'+
  27. domainParse[3]+'/'+domainParse[4]+'/'+domainParse[5]+
  28. '/v1/map/named/'+data['layers'][1]['options']['named_map']['name']+'/jsonp'
  29. $.ajax({
  30. url: ajaxUrl,
  31. type: 'GET',
  32. dataType: 'jsonp',
  33. data: {
  34. stat_tag:data['layers'][1]['options']['named_map']['stat_tag'],
  35. config:JSON.stringify(data['layers'][1]['options']['named_map']['params'])
  36. },
  37. })
  38. .done(function(tdata) {
  39. ONEMAP.V.loading.loaded();
  40. var layers = [];
  41. tdata.utfgridUrl = {};
  42. $.each(tdata['metadata']['layers'],function(index, el) {
  43. if(el['type'] == 'mapnik'){
  44. layers.push(index);
  45. tdata.utfgridUrl[index] = domainParse[0]+'//'+dPort[0]+'/'+
  46. domainParse[3]+'/'+domainParse[4]+'/'+domainParse[5] + '/v1/map/' + tdata.layergroupid + '/'+index+'/{z}/{x}/{y}.grid.json';
  47. }
  48. });
  49. tdata.serverApiUrl = domainParse[0]+'//'+dPort[0]+'/'+
  50. domainParse[3]+'/'+domainParse[4]+'/'+domainParse[5];
  51. tdata.templateUrl = domainParse[0]+'//'+dPort[0]+'/'+
  52. domainParse[3]+'/'+domainParse[4]+'/'+domainParse[5] + '/v1/map/' + tdata.layergroupid + '/'+layers.join(',')+'/{z}/{x}/{y}.png';
  53. callbackFunc(tdata);
  54. });
  55. })
  56. }
  57. };
  58. return cartodbParse;
  59. })