Javascript Proj4Js Issue
-
26-09-2019 - |
Pergunta
Olá, estou tendo um problema usando a biblioteca ProJ4js. Aqui está minha fonte:
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<script type="text/javascript" src="lib/proj4js-combined.js"></script>
</head>
<script type="text/javascript">
function go()
{
var lon = document.getElementById("xOrg").value;
var lat = document.getElementById("yOrg").value;
var reprojected = reproject(Number(lon),Number(lat));
document.getElementById("xNew").value = reprojected.x;
document.getElementById("yNew").value = reprojected.y;
}
function reproject(lon,lat)
{
var sourceSys = new Proj4js.Proj('WGS84');
var destSys = new Proj4js.Proj('EPSG:32187');
var pointSource = new Proj4js.Point(lon,lat);
var pointDest = Proj4js.transform(sourceSys, destSys, pointSource);
return pointDest;
}
</script>
<body>
<div>
<input id="xOrg" type="text" value="-73.56"/>
<input id="yOrg" type="text" value="45.49"/>
</div>
<div>
<input id="xNew" type="text" value=""/>
<input id="yNew" type="text" value=""/>
</div>
<div>
<input type="button" value="go" onclick="go()"/>
</div>
</body>
</html>
Não entendo por que a reprojeção só funciona quando clico no botão duas vezes, quando clico nele pela primeira vez, os mesmos valores são retornados. Parece funcionar apenas quando clico no botão duas ou mais. Aqui está esta página online:clique
Solução
var sourceSys = new Proj4js.Proj('WGS84');
var destSys = new Proj4js.Proj('EPSG:32187');
para aqui:
...
<script type="text/javascript">
var sourceSys = new Proj4js.Proj('WGS84');
var destSys = new Proj4js.Proj('EPSG:32187');
function go()
{
...
E por qualquer motivo, agora funciona ...
Outras dicas
Não vou conseguir carregar a página, mas é um problema de atualização? Ou seja. Você pode fazer com que as tags de entrada XNew e YNew se refresquem imediatamente após a definição de seus valores?
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow