在看了一篇Google Map 和 QlikView10 整合的文章,决定自己实践一下熟悉一下这个流程。由于原文是西班牙语,所以没有逐句翻译,只是明白大体流程后,将我自己做的流程写下来,流程如下:
1. 打开QlikView 10(下载地址) 通过 File->Edit Script将以下代码贴到原有代码的下方。点击File—>Reload,加载数据。
SET DecimalSep='.'; // Google Maps en QlikView // Google Maps Key. Obten la tuya en http://code.google.com/apis/maps/signup.html gmap_key = 'xx'; max_zoom_level = 4; //valor máximo = 17 // Variables requeridas para calcular mapa var_pi180= '=pi()/180'; var_lat_offset= '0'; var_mid_lat= '=min(latitude)+(1+var_lat_offset)*((max(latitude)-min(latitude))/2)'; var_mid_long= '=min(longitude)+(max(longitude)-min(longitude))/2'; var_zoom= '=max(aggr(if(max( round(256*pow(2,(_zoom_level -1)))+( longitude *((256*pow(2,_zoom_level ))/360)) )-min( round(256*pow(2,(_zoom_level -1)))+( longitude *((256*pow(2,_zoom_level ))/360)) ) <map_size_x AND max((256*pow(2,(_zoom_level-1)))+((0.5*log((1+(sin((latitude)*pi()/180)))/(1-(sin((latitude)*pi()/180)))))*((-256*pow(2,_zoom_level))/(2*pi()))))-min((256*pow(2,(_zoom_level-1)))+((0.5*log((1+(sin((latitude)*pi()/180)))/(1-(sin((latitude)*pi()/180)))))*((-256*pow(2,_zoom_level))/(2*pi()))))<map_size_y,_zoom_level,1),_zoom_level))'; var_maptype= '=if(isnull(only(maptype)),fieldvalue( '&chr(39&'maptype'&chr(39)&', 1 ),maptype)'; map_size_x= '350'; map_size_y= '350'; var_mc2= '=256*pow(2,$(var_zoom))'; var_mc1= '=256*pow(2,($(var_zoom)-1))'; SET HidePrefix='_' ; // Campo Requerido para calcular el mejor nivel de zoom _zoom_level: Load RecNo( ) as _zoom_level autogenerate(max_zoom_level); maptype: LOAD * INLINE [ maptype roadmap mobile satellite terrain hybrid ]; Data: LOAD * INLINE [ ciudad,poblacion,latitude,longitude Arica,189692,-32.7648852,-71.1963079 Iquique,286105,-20.2440725,-70.1385651 Antofagasta,547933,-23.6239214,-70.4016127 Copiapó,272402,-27.3753215,-70.3285281 La Serena,6773,-29.9069352,-71.2470754 Valparaíso,1682005,-33.0504619,-71.6164515 Santiago,6607805,-33.4253598,-70.5664659 Rancagua,84912,-34.1620308,-70.7410124 Talca,975244,-35.4227130,-71.6565138 Concepción,1982649,-36.8148146,-73.0292574 Temuco,937259,-38.7270296,-72.5989468 Valdivia,373712,-39.8274322,-73.2512409 Puerto Montt,794529,-41.4543039,-72.9925047 Coihaique,100417,-45.5637560,-72.0646866 Punta Arenas,156502,-53.1478563,-70.9066254 ];
2.在QlikView的Main Sheet 面板中右键 新建一个Chart 选择Scatter Chart。然后点击完成,这时这个Chart 还什么数据都没有,所以在Chart右键 属性切换到Dimension面板上,插入一个Dimension——-Ciudad,完成后点击应用。
3.切换到Expressions的设置面板,先勾选上左下角的Advanced Mode,切换到如下图的编辑模式。
要添加四个Expressions。分别如下:
longitude
前两个的定义值填入上述的公式,后面两个就填上两个字段名就好了。完成后点击应用。
4. 切换到定义Axes的界面,将下面的值填入相应的文本框中。
5.最后一步很关键,切换到Colors面板 中面板的左中部有一个Frame Background,选中其中的一个Dynamic Image,填入以下的公式。完成后点击应用,这时就能看到效果了。Qlikview版本不同效果也有些不同。
='http://maps.google.com/staticmap?center='&num(var_mid_lat, '##############', '.', ',' )&','&num(var_mid_long, '##############', '.', ',' )&'&zoom=$(var_zoom)'&'&maptype='&var_maptype&'&size='&map_size_x&'x'&map_size_y&'&key='&gmap_key & '.jpg'
6.再可以添加些其他Object,最后效果图如下。
原文地址:http://www.webmining.cl/2011/02/google-maps-en-qlikview/