[Desenvolvimento] Qlikview e Google Maps (Atualizado 2013)
Foi publicado recentemente aqui no blog sobre o problema do Google Maps quando é feito a migração para o Qlikview 10, mas acredito que muitas pessoas ainda não sabem como integrar o Google Maps ao Qlikview, então vamos aprender como fazer isso.
Esse é um processo um pouco avançado, uma pessoa que está iniciando no Qlikview pode encontrar dificuldades em criar este exemplo, mas procurei descrevê-lo da maneira mais simples possível e com muitas imagens para facilitar a compreensão.
A primeira coisa que precisamos saber é: O Google Maps trabalha com latitudes e longitudes, então você precisa ter esses dados para conseguir montar o seu QVW.
Por exemplo: você possui uma lista de cliente é quer analisá-los de acordo com a região onde cada um está. Então você precisa da Latitude e Longitude para informar onde estão seus clientes.
Então vamos começar criando o nosso QVW.
Crie um novo QVW e salve-o.
Vou colocar um script de exemplo,você pode colocar as informações de seus Clientes, lembre-se, é necessária a Latitude e Longitude no seu script. (Meu script é um exemplo simples).
LOAD * INLINE [
ID, Cidade, Região, latitude, longitude, Valor
1, São Paulo, Republica, “-23,54198”, “-46,63503”, 10
2, São Paulo, Vila Guilherme, “-23,50198”, “-46,60503”, 10
];
Agora vamos tratar do Google Maps.
Recomendo criar uma nova aba no seu Script chamada Google Maps.
Copie o Script abaixo para o seu Script.
// Google Maps in QlikView
// Google Maps Key
// get a key here http://code.google.com/apis/maps/signup.html
gmap_key = ‘xx’;
max_zoom_level = 17;
//maximum value 17
// Variables required for calculating map
// No need to change these
var_pi180= ‘=pi()/180’;
var_lat_offset= ‘0’;
var_mc2= ‘=256*pow(2,$(var_zoom))’;
var_mc1= ‘=256*pow(2,($(var_zoom)-1))’;
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,null()),_zoom_level))’;var_maptype= ‘=if(isnull(only(maptype)),fieldvalue( ‘&chr(39)&’maptype’&chr(39)&’, 1 ),maptype)’;
//Você pode mudar esses valores
map_size_x= ‘640’;
map_size_y= ‘400’;SET HidePrefix=’_’ ;
// Field required for calcualting best zoom level
_zoom_level:Load RecNo( ) as _zoom_level autogenerate(max_zoom_level);
//Map Type define qual tipo de mapa será exibido no gráfico.maptype:
LOAD * INLINE [
maptype
roadmap
mobile
satellite
terrain
hybrid
];
Pronto.
Com Script concluído faça o Reload do Documento.
Agora vamos criar o gráfico com o mapa do Google de fundo.
Crie um novo objeto de gráfico e escolha o Gráfico de Dispersão.
Escolha a sua dimensão.
Agora vamos criar as expressões, é agora que vamos precisar das latitudes e longitudes pois são elas que vão definir as posições das bolinhas no gráfico.
Entre na aba Expressões.
Longitude:=sum( round (256*pow(2,($(var_zoom)-1)))+( longitude *((256*pow(2,$(var_zoom)))/360)) )
Latitude:=sum( ((256*pow(2,($(var_zoom)-1)))+((0.5*log((1+(sin((latitude)*pi()/180)))/(1-(sin((latitude)*pi()/180)))))*((-256*pow(2,$(var_zoom)))/(2*pi())))))
Valor (define o tamanho da bolinha no gráfico):
=sum( Valor )
Agora vamos classificar as bolinhas no gráfico.
Acesse a aba Classificar.
Em “Classificar por” escolha expressão e coloque a expressão que você colocou na expressão “Valor”.
Vamos criar os limites do gráfico.
Acesse a aba “Eixos”.
No Eixo X:Mínimo estático:
(256*pow(2,($(var_zoom)-1)))+( var_mid_long *((256*pow(2,$(var_zoom)))/360)) -round(map_size_x/2)
Maximo estático:
( (256*pow(2,($(var_zoom)-1)))+( var_mid_long *((256*pow(2,$(var_zoom)))/360)) + round(map_size_x/2)-15)
No Eixo Y:Mínimo estático:
((256*pow(2,($(var_zoom)-1)))+((0.5*log((1+(sin(var_mid_lat*pi()/180)))/(1-(sin(var_mid_lat*pi()/180)))))*((-256*pow(2,$(var_zoom)))/(2*pi())))+round(map_size_y/2))
Maximo estático:
((256*pow(2,($(var_zoom)-1)))+((0.5*log((1+(sin(var_mid_lat*pi()/180)))/(1-(sin(var_mid_lat*pi()/180)))))*((-256*pow(2,$(var_zoom)))/(2*pi())))-round(map_size_y/2)+15)
Nos dois eixos desmarque a opção Forçar 0.
Nos dois eixos marque a opção Ocultar Eixos.
O Google fez uma alteração em sua API e por isso os mapas configurados antes de 2013 não estão funcionando.
A expressão abaixo foi corrigida para esta nova API do Google Maps.
Agora vamos definir a imagem do Google como plano de fundo no gráfico.
Acesse a aba “Cores”.
Em “Fundo da Moldura” selecione a opção “Imagem Dinâmica” e coloque a seguinte expressão (Atualizado 2013):
=’http://maps.google.com/maps/api/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=’& ‘AIzaSyAABZIVacmXaH_m5XNM2PzcJo3uDr12Rzk’ & ‘&sensor=false’
Agora vamos configurar o tamanho da nossa tabela
Vá até a aba titulo e coloque as informações de altura e largura.
Nosso Script o padrão é 640×400 você pode mudar essa configuração alterando as linhas abaixo no seu script:
map_size_x= ‘640’;
map_size_y= ‘400’;
Pronto, essas são as configurações necessárias para integrar o Google Maps ao Qlikview.
Clique em OK e o mapa do Google com os dados de seus clientes devem aparecer no gráfico como na imagem abaixo.
Gostaria de pedir um grande favor para as pessoas que estão lendo este post e estão fazendo os procedimentos descritos nele.
Façam comentários sobre a dificuldade, dúvidas, problemas, se funcionou de primeira, enfim informem o que aconteceu para que eu possa ajudá-los e melhorar os artigos do Blog.