/** * @fileoverview cartodb viz.json 解析 * @author Song.Huang * @version 1.0.0 */ define(function() { var cartodbParse = function() { /** * [getVizInfo description] * @param {[type]} options [description] * @param {[type]} callbackFunc [description] * options.vizUrl = 'http://imhuangsong.carto.com/api/v2/viz/81a3f750-f60f-11e5-8817-0e3ff518bd15/viz.json' */ this.getVizInfo = function(options, callbackFunc) { ONEMAP.V.loading.load(); $.ajax({ url: options.vizUrl, type: 'GET', dataType: 'jsonp' }) .done(function(data) { ONEMAP.V.loading.loaded(); ONEMAP.V.loading.load(); var domainParse = options.vizUrl.split('/'); var dPort = domainParse[2].split(':'); var ajaxUrl = domainParse[0]+'//'+dPort[0]+'/'+ domainParse[3]+'/'+domainParse[4]+'/'+domainParse[5]+ '/v1/map/named/'+data['layers'][1]['options']['named_map']['name']+'/jsonp' $.ajax({ url: ajaxUrl, type: 'GET', dataType: 'jsonp', data: { stat_tag:data['layers'][1]['options']['named_map']['stat_tag'], config:JSON.stringify(data['layers'][1]['options']['named_map']['params']) }, }) .done(function(tdata) { ONEMAP.V.loading.loaded(); var layers = []; tdata.utfgridUrl = {}; $.each(tdata['metadata']['layers'],function(index, el) { if(el['type'] == 'mapnik'){ layers.push(index); tdata.utfgridUrl[index] = domainParse[0]+'//'+dPort[0]+'/'+ domainParse[3]+'/'+domainParse[4]+'/'+domainParse[5] + '/v1/map/' + tdata.layergroupid + '/'+index+'/{z}/{x}/{y}.grid.json'; } }); tdata.serverApiUrl = domainParse[0]+'//'+dPort[0]+'/'+ domainParse[3]+'/'+domainParse[4]+'/'+domainParse[5]; tdata.templateUrl = domainParse[0]+'//'+dPort[0]+'/'+ domainParse[3]+'/'+domainParse[4]+'/'+domainParse[5] + '/v1/map/' + tdata.layergroupid + '/'+layers.join(',')+'/{z}/{x}/{y}.png'; callbackFunc(tdata); }); }) } }; return cartodbParse; })