Em determinadas situações é necessário convertermos coordenadas, isto ocorre por diversos motivos, mas para qualquer motivo que seja o seu você poderá utilizar o código abaixo para isto.

Definimos um ponto com determinadas coordenadas:

OSGeo.MapServer.pointObj pt = new OSGeo.MapServer.pointObj(458360.889647, 7625796.6882136, 0, 0);

Definimos a projeção que as coordenadas estão e a projeção para qual queremos converter.

De:

//http://www.spatialreference.org/ref/epsg/4326/

OSGeo.MapServer.projectionObj projA = new OSGeo.MapServer.projectionObj(“init=epsg:4326″);

Para:

//http://www.spatialreference.org/ref/epsg/29192/

OSGeo.MapServer.projectionObj projB = new OSGeo.MapServer.projectionObj(“init=epsg:29192″);

//Fazemos a chamada do metodo que realiza a conversão

pt.project(projA, projB);

//E como resultado temos

X=7999.9066867105394

Y=133095.26029700678

Um forte abraço a todos,

qualquer duvida é só falar.

1. Introdução

Nesse novo post, vamos dar seqüência ao nosso projeto, partindo agora para a manipulação visual de nosso mapa, realizando as operações de zoom mais, zoom menos, os deslocamentos horizontais /verticais e claro o zoom total.

Estas manipulações podem ser implementadas de diversas formas, principalmente fazendo uso de artifícios, como javascript, para dar uma melhor interação, porem vamos fazer da maneira mais simples, fica a critério de vocês as implementações dessas “perfumarias” :)

2. Explicando

  • Zoom total

Para realizar o comando de zoom total deveremos “guardar” o primeiro extent existente no momento que nosso objeto mapa foi criado.

  • Demais controles

Todos os demais controles serão feitos através da função zoomPoint , dependendo de qual parâmetro nos passarmos será a alteração da posição do mapa.

Veja abaixo uma descrição dos parâmetros passados a essa função:

    • Fator de zoom = é o que tipo de zoom será feito, positivo zoom mais, negativo zoom menos. Existe uma exceção para o 0 (zero) que não serve como parâmetro e o 1 que serve apenas para um zoom estático.
    • Posição do zoom = esse parâmetro é de suma importância pois ele é posição há qual o mapa será centralizado, isto é, a imagem gerada terá essa posição como seu centro.
    • Tamanho horizontal = essa informação é em pixel.
    • Tamanho vertical = essa informação é em pixel.
    • Extent atual = atual extent do mapa.
    • Maximo extent = Maximo extent permitido, ignore esse parâmetro nesse momento não iremos nos atentar a ele.

Com a manipulação desses parâmetros conseguimos escrever os códigos abaixo, realizando assim as operações desejadas.

public void ZoomMais()
{
map.zoomPoint(2, new pointObj(Convert.ToInt32(map.width / 2), Convert.ToInt32(map.h
eight / 2), 0, 0), map.width, map.height, map.extent, null);
}

public void ZoomMenos()
{
map.zoomPoint(-2, new pointObj(Convert.ToInt32(map.width / 2), Convert.ToInt32(map.height / 2), 0, 0), map.width, map.height, map.extent, null);
}

public void MoverMapaParaCima()
{
map.zoomPoint(1, new pointObj(Convert.ToInt32(map.width / 2), Convert.ToInt32(map.height / 10) * 8, 0, 0), map.width, map.height, map.extent, null);
}

public void MoverMapaParaBaixo()
{
map.zoomPoint(1, new pointObj(Convert.ToInt32(map.width / 2), Convert.ToInt32(map.height / 10) * 2, 0, 0), map.width, map.height, map.extent, null);
}

public void MoverMapaParaDireita(){map.zoomPoint(1, new pointObj(Convert.ToInt32(map.width / 10) * 2, Convert.ToInt32(map.height / 2), 0, 0), map.width, map.height, map.extent, null);
}

public void MoverMapaParaEsquerda(){map.zoomPoint(1, new pointObj(Convert.ToInt32(map.width / 10) * 8, Convert.ToInt32(map.height / 2), 0, 0), map.width, map.height, map.extent, null);
}

Caso deseje realizar o download do código, clique aqui.

3. Finalizando

No próximo post será como criaremos consultas, isto é iremos localizar informações em nosso mapa.

Um abraço a todos.

Até mais.

Rafael Sussel Decleva

Next Page »