Navix Javascript Esri client


Dependências

Antes de utilizar o Navix deve-se certificar de atender suas dependências:

Usando

Template básico

Segue abaixo um template HTML básico de uso do Navix

<!DOCTYPE html>
<html>
    <head>
        <title>Navix</title>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1,user-scalable=no">

        <!--
            Dependências CSS
        -->
        <link rel="stylesheet" href="//netdna.bootstrapcdn.com/bootstrap/3.1.1/css/bootstrap.min.css">
    </head>
    <body>

        <!--
            Elemento aonde será colocado mapa
        -->
        <div id="map"></div>

        <!--
            Dependências javascript
        -->
        <script src="//code.jquery.com/jquery-1.11.0.min.js"></script>
        <script src="//netdna.bootstrapcdn.com/bootstrap/3.1.1/js/bootstrap.min.js"></script>
        <script src="jquery.navix.js"></script>

        <!--
            Inicia o Navix no elemento com id igual map
        -->
        <script type="text/javascript">
            $('#map').navix({
                sistema: 43,
                ambiente: NAVIX_CONFIG.ENV.HOM
            });
        </script>
    </body>
</html>

Opções

Nome Tipo Valor padrão Descrição
*sistema integer 0 ID do sistema do GEO utilizado para retornar as layers.
Esse ID é dado para cada desenvolvedor de acordo com as informações que irá exibir em seu sistema.
*ambiente integer 0 Valores de constantes referentes aos ambientes:
  • NAVIX_CONFIG.ENV.DEV (Desenvolvimento)
  • NAVIX_CONFIG.ENV.HOM (Homologação)
  • NAVIX_CONFIG.ENV.PRD (Produção)
  • NAVIX_CONFIG.ENV.OUT (Externo)
infoWindow boolean true Determina se será exibida uma janela popup ou não quando a ferramenta Identify estiver habilitada
where object vazio Condição padrão de busca.
O objeto where deve ser no seguinte formato:
                                    {
                                        layer: {
                                            id: @id,
                                            service: @service
                                        },
                                        clause: @clause
                                    }
                                
Onde layer é um objeto contendo os campos id e service. @id é um número inteiro correspondente à layer a ser pesquisada e @service somente os valores 'Mapa' e 'MapaBase', que são os serviços onde será feita a pesquisa. Já @clause é uma string com uma cláusula where válida. Exemplo de cláusula válida: 'objectid = 100'
Mais informações em Pesquisa
tools array [string] NAVIX_CONFIG.TOOLS Ferramentas do navix disponíveis no mapa.
Mais informações em Ferramentas
basemap string NAVIX_CONFIG.BASEMAP.MAP Mapa base contendo layers comuns à todos os sistemas.
Valores de constantes referentes aos basemaps:
  • NAVIX_CONFIG.BASEMAP.MAP (Mapa)
  • NAVIX_CONFIG.BASEMAP.IMAGE (Imagem de fundo (Ortofoto))
  • NAVIX_CONFIG.BASEMAP.TERRAIN (Mapa com o relevo)
pesquisaInit array [object] vazio Categorias de pesquisa marcadas inicialmente
Por padrão, nenhuma categoria é marcada para pesquisa, cabendo ao usuário determinar onde pesquisar. Porém, o desenvolvedor pode determinar se algumas categorias estrão habilitadas por padrão, bastando informar no seguinte formato:
                                {                                    
                                    id: @id,
                                    service: @service                                    
                                }
                            
Onde @id é um número inteiro correspondente à layer a ser pesquisada e @service somente os valores 'Mapa' e 'MapaBase', que são os serviços onde será feita a pesquisa.

*Parâmetro obrigatório

Estrutura

Interface

A interface do Navix é divida nos seguintes itens:

Sidebar

Barra lateral do mapa. Inicialmente fica escondida e é acionada (abrir/fechar) através de um botão

Container

Elemento aonde fica a parte visível do mapa.

Toolbar

Barra de botões localizada dentro do container, na parte superior direita

.navix-sidebar
.navix-toolbar
.navix-container

Eventos

Nome Parâmetros Descrição
navix.load event, navix Disparado quando a layer Dinamico é carregada
navix.mapload event, navix Disparado quando o esri.Map é carregado
navix.error event, error Disparado quando algum erro acontece
navix.featureadded event, navix, graphic Disparado quando uma feição é adicionada ao mapa
navix.graphicselect event, navix, graphic Disparado quando uma feição é selecionada no mapa

Métodos

Nome Parâmetros Retorno Descrição
navix.container() jQuery Retorna o elemento representando o container
navix.sidebar() jQuery Retorna o elemento representando a sidebar
navix.sidebar().addItem(icon, title, content) void Adiciona um novo item ao accordion da sidebar.
navix.toolbar() jQuery Retorna o elemento representando o toolbar
navix.progress() jQuery Retorna o elemento representando a barra de progresso
navix.resize() void Ajusta o layout do mapa
navix.baseUrl() string Retorna a URL base onde o Navix está hospedado
navix.updateWhere(navix, where)
  • navix: referência própria
  • where: objeto where válido. Mais informações em Pesquisa
void Atualiza o filtro do mapa através de uma cláusula where válida.
Mais informações em Pesquisa
navix.filterResults(navix, array, key, value)
  • navix: referência própria
  • array: array que deseja filtrar o resultado
  • key: índice do item que deseja obter
  • value (opcional): valor comparativo para obter um item do array
array[object] Filtra um array obtido através de um Identify no mapa, para se obter determinada layer ou field.
Mais informações em Identify

Ferramentas

O Navix é dividido em ferramentas que podem ser habilitadas ou desabilitadas em cada mapa.

A ferramenta é incluída automaticamente na página a partir do seu nome. Exemplo:

$('.selector').navix({ ... , tools: ['search', 'geolocation'] ... })

No caso acima serão incluídos apenas os scripts das ferramentas search e geolocation

A constante NAVIX_CONFIG.TOOLS contém as ferramentas padrão para o funcionamento mínimo do mapa. As ferramentas são: basemap, geolocation, help, identify, toc, print, results, ruler, scalebar, search. Para ferramentas adicionais, basta recuperar o valor da constante em um array e adicionar a este array as demais ferramentas, e por fim, adicionar o novo array a configuração do Navix. Ex.:

var tools = NAVIX_CONFIG.TOOLS;
tools.push('tool1','tool2'); 
$('.selector').navix({
    ..., 
    tools: tools
});
                

Pesquisa jquery.navix.search.js

Adiciona ao mapa a capacidade de efetuar buscas nas camadas que podem ser consultadas.

Além do campo de busca localizado na parte superior esquerda do mapa, a ferramenta de Pesquisa também adiciona as camadas que podem ser buscadas na sidebar do mapa.

Eventos

Nome Parâmetros Descrição
navix.searchready event, navix Evento executado quando a ferramenta foi iniciada. É útil para atualização de cláusula where do mapa.
navix.searchstart event, navix Evento executado ao iniciar uma busca.
navix.searchresult event, navix, featureSet Evento executado a cada resultado encontrado.
navix.searchend event, navix Evento executado após término da busca.
navix.searcherror event, exception Evento executado após erro na busca.

Para a atualização da cláusula where do mapa, é necessário que a ferramenta de busca esteja carregada. Para isso, basta adicionar um listener para o evento navix.searchready, e depois chamar a função navix.updateWhere(). Ex.:

var update;
$('.selector').navix({
    ...
})
.on('navix.searchready', function(evt, navix){
    update = function(id, service, clause){
        navix.updateWhere(navix, {
            layer: {
                id: id,
                service: service
            },
            clause: clause            
        });
    }
});

update(id, service, clause);

                

TOC jquery.navix.toc.js

Exibe na sidebar do mapa informações sobre pontos e camadas. Além de comandos para exibir ou ocultar um item, e alterar a opacidade das camadas

Medida jquery.navix.ruler.js

Adiciona na sidebar do mapa ferramentas para efetuar medições no terreno, calculando distâncias e/ou áreas.

Impressão jquery.navix.print.js

Exibe um botão para exportar o mapa em formato A3 e A4 em retrato e paisagem, para posteriormente ser impresso.

Barra de escala jquery.navix.scalebar.js

Exibe na parte inferior do mapa o indicador de escala.

Identify jquery.navix.identify.js

Adiciona ao mapa a capacidade de identificar elementos no mapa a partir de um ponto.

Para iniciar a identificação de um ponto basta pressionar (click ou touch) uma feição.

Eventos

Nome Parâmetros Descrição
navix.identifystart event, navix
navix.identify event, navix, resultado, taskResult Evento executado após identificações de um ou mais pontos.
navix.identifyend event, navix, listaResultados Evento executado após identificações de todos os pontos, retornando um array com os resultados formatados da seguinte maneira:
                                    [{
                                        layerId:...,
                                        layerName:...,
                                        layerAlias:...,
                                        campos: [...],
                                        geometria: {...}
                                    }]
                                

Para filtrar valores da lista retornada no Identify, basta utilizar a função navix.filterResults(). Essa funcção possui um overload para se obter um item do array pelo seu índice, ou com o parâmetro opcional value obter um item do array com índice igual ao valor passado. Exemplo.:

$('selector').navix({
            ...
})
.on('navix.identifyend', function(evt, navix, resultados){

    //Obtendo a layer de id 1. Como o retorno é um array, o primeiro item da lista está no index 0
    var layer = navix.filterResults(navix, resultados, "layerId", 1)[0];

    //Obtendo o campo objectid da layer recuperada acima
    var objectid = navix.filterResults(navix, layer.campos, "objectid");    
});
                

Localização jquery.navix.geolocation.js

Adiciona um botão na toolbar que utiliza a API Geolocation do HTML5 para o usuário visualizar sua localização no mapa.

Criando uma ferramenta

Para criar uma nova ferramenta é necessário criar um arquivo seguindo o padrão jquery.navix.[toolName].js no mesmo nível do arquivo jquery.navix.js, aonde [toolName] é o nome da nova ferramenta.

E depois para utilizá-la basta informar o nome da ferramenta nos parâmetros do navix. Exemplo: tools: [ '[toolName]', ... ]

As ferramentas seguem o padrão de desenvolvimento do RequireJS. Segue abaixo a estrutura básica para criar uma nova ferramenta:

define([], 
    function(){

        return function(navix) {
            ...
        }
    }
); 
                

Dentro do array da função define vão as dependências do código, principalmente se a nova ferramenta utilizar funcionalidades da API JavaScript da ESRI. Nos parâmetros da primeira function vão os alias das dependências carregadas. E dentro da segunda função, a lógica da ferramenta.