Foros del Web » Programando para Internet » Javascript »

[SOLUCIONADO] Problemas de conversión latlng a UTM en Google maps

Estas en el tema de Problemas de conversión latlng a UTM en Google maps en el foro de Javascript en Foros del Web. Buenas, estoy integrando un mapa de google maps en mi aplicación. El mapa se situa en unas coordenadas dadas en un par de Inputs en ...
  #1 (permalink)  
Antiguo 20/10/2014, 02:16
 
Fecha de Ingreso: noviembre-2009
Mensajes: 33
Antigüedad: 14 años, 5 meses
Puntos: 0
Problemas de conversión latlng a UTM en Google maps

Buenas, estoy integrando un mapa de google maps en mi aplicación.
El mapa se situa en unas coordenadas dadas en un par de Inputs en formato UTM.

Al estar ya el mapa, he creado un marker y hacerlo dragable para que se pueda editar el punto al que referencio, y que me devuelva los valores.

Ya tengo el punto creado, se mueve, y me devuelve los valores lat/lng correctamente.

El problema lo tengo al realizar la conversión de latlng a UTM, puesto que veo que al mover minimamente el punto, me devuelve unos resultados erroneos.

Os dejo las partes del código correspondientes:

Evento para la edición de la posicion del marker:
Código Javascript:
Ver original
  1. google.maps.event.addListener(marker, 'dragend', function(){
  2.  
  3.                 updatePosition(marker.getPosition());
  4.             });

Funcion para cambiarme la posicion en los input:


Código Javascript:
Ver original
  1. function updatePosition(latLng){
  2.         uno = parseFloat(latLng.lat());
  3.         dos = parseFloat(latLng.lng());
  4.         zona = parseFloat ("30");
  5.         var xy = new Array(2);
  6.        
  7.          LatLonToUTMXY(uno,dos,zona,xy);
  8.  
  9.          //var lati = "483149.550";
  10.          //var longi = "4686069.23";
  11.  
  12.         jQuery('#gen_inmurb_coordenadas_x').val(xy[0]);
  13.        jQuery('#gen_inmurb_coordenadas_y').val(xy[1]);
  14.    
  15.   }

Y el código que realiza la conversión de latlon a UTM:

Código Javascript:
Ver original
  1. function LatLonToUTMXY (lat, lon, zone, xy)
  2.     {
  3.         MapLatLonToXY (lat, lon, UTMCentralMeridian (zone), xy);
  4.  
  5.         /* Adjust easting and northing for UTM system. */
  6.         xy[0] = xy[0] * UTMScaleFactor + 500000.0;
  7.         xy[1] = xy[1] * UTMScaleFactor;
  8.         if (xy[1] < 0.0)
  9.             xy[1] = xy[1] + 10000000.0;
  10.  
  11.         return zone;
  12.     }
  13. function MapLatLonToXY (phi, lambda, lambda0, xy)
  14.     {
  15.         var N, nu2, ep2, t, t2, l;
  16.         var l3coef, l4coef, l5coef, l6coef, l7coef, l8coef;
  17.         var tmp;
  18.  
  19.         /* Precalculate ep2 */
  20.         ep2 = (Math.pow (sm_a, 2.0) - Math.pow (sm_b, 2.0)) / Math.pow (sm_b, 2.0);
  21.    
  22.         /* Precalculate nu2 */
  23.         nu2 = ep2 * Math.pow (Math.cos (phi), 2.0);
  24.    
  25.         /* Precalculate N */
  26.         N = Math.pow (sm_a, 2.0) / (sm_b * Math.sqrt (1 + nu2));
  27.    
  28.         /* Precalculate t */
  29.         t = Math.tan (phi);
  30.         t2 = t * t;
  31.         tmp = (t2 * t2 * t2) - Math.pow (t, 6.0);
  32.  
  33.         /* Precalculate l */
  34.         l = lambda - lambda0;
  35.    
  36.         /* Precalculate coefficients for l**n in the equations below
  37.            so a normal human being can read the expressions for easting
  38.            and northing
  39.            -- l**1 and l**2 have coefficients of 1.0 */
  40.         l3coef = 1.0 - t2 + nu2;
  41.    
  42.         l4coef = 5.0 - t2 + 9 * nu2 + 4.0 * (nu2 * nu2);
  43.    
  44.         l5coef = 5.0 - 18.0 * t2 + (t2 * t2) + 14.0 * nu2
  45.             - 58.0 * t2 * nu2;
  46.    
  47.         l6coef = 61.0 - 58.0 * t2 + (t2 * t2) + 270.0 * nu2
  48.             - 330.0 * t2 * nu2;
  49.    
  50.         l7coef = 61.0 - 479.0 * t2 + 179.0 * (t2 * t2) - (t2 * t2 * t2);
  51.    
  52.         l8coef = 1385.0 - 3111.0 * t2 + 543.0 * (t2 * t2) - (t2 * t2 * t2);
  53.    
  54.         /* Calculate easting (x) */
  55.         xy[0] = N * Math.cos (phi) * l
  56.             + (N / 6.0 * Math.pow (Math.cos (phi), 3.0) * l3coef * Math.pow (l, 3.0))
  57.             + (N / 120.0 * Math.pow (Math.cos (phi), 5.0) * l5coef * Math.pow (l, 5.0))
  58.             + (N / 5040.0 * Math.pow (Math.cos (phi), 7.0) * l7coef * Math.pow (l, 7.0));
  59.    
  60.         /* Calculate northing (y) */
  61.         xy[1] = ArcLengthOfMeridian (phi)
  62.             + (t / 2.0 * N * Math.pow (Math.cos (phi), 2.0) * Math.pow (l, 2.0))
  63.             + (t / 24.0 * N * Math.pow (Math.cos (phi), 4.0) * l4coef * Math.pow (l, 4.0))
  64.             + (t / 720.0 * N * Math.pow (Math.cos (phi), 6.0) * l6coef * Math.pow (l, 6.0))
  65.             + (t / 40320.0 * N * Math.pow (Math.cos (phi), 8.0) * l8coef * Math.pow (l, 8.0));
  66.    
  67.         return;
  68.     }

Mis disculpas, ya encontré el error, no le había pasado a radianes antes de convertirlo.
Siento las molestias, gracias.

Última edición por supernino69; 20/10/2014 a las 03:25

Etiquetas: funcion, google, input, jquery, maps, valor
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 09:49.