saber obtener mis longitud lector latitud google geograficas formatos coordenadas como buscar gps geocoding coordinates latitude-longitude

gps - obtener - lector de coordenadas



Conversión de longitud y latitud a XY en un mapa con puntos de calibración (7)

Esto es bastante sencillo y simple ... déjame explicarte cómo es posible.

La latitud y la longitud son líneas imaginarias dibujadas en la tierra para que pueda localizar con precisión cualquier lugar del mundo. En pocas palabras, son las colas X e Y de un plano. La latitud es una línea vertical que va de norte a sur con sus 90 grados en el polo norte y -90 grados en el polo sur.

Por otro lado, la longitud es una línea horizontal que corre de este a sur con -180 grados en el oeste y 180 grados en el este.

puede convertir el latLng en colas de píxeles asumiendo que el ancho del contenedor html es el ancho del mundo y lo mismo se aplica a la altura.

Fórmula - Longitud - píxel

(givenLng*widthOfContainerElement)/360

donde 360 ​​es la longitud total en grados

Fórmula -Latitud - píxel

(givenLat*heightOfContainerElement)/180

donde 180 es la latitud total en grado

//Height is calculated from the bottom

Puede encontrar una implementación operativa de esta fórmula aquí, en mi sitio web (solo utiliza JavaScript)

http://www.learntby.me/javascript/latLngconversion.php

Déjame saber si todavía necesitas alguna aclaración.

Si tengo un mapa jpeg con tamaño sizeX, sizeY

y algunos puntos de calibración en el mapa (X, Y, Lon, Lat)

¿Cuál sería el algoritmo para calcular el punto XY correspondiente en el mapa con un par de longitud / latitud dado?


Esto es lo que funcionó para mí, sin tanto bs.

int x = (int) ((MAP_WIDTH/360.0) * (180 + lon)); int y = (int) ((MAP_HEIGHT/180.0) * (90 - lat));

Las coordenadas lat, lon me fueron dadas por dispositivos Android. Por lo tanto, deben estar en el mismo estándar utilizado por todos los productos de Google Earth / Map.


Hay mucha información en Internet sobre el cálculo de la distancia entre dos pares de latitud y longitud. Estamos usando esos cálculos en nuestro sitio web público y no son triviales de entender / discutir (así que no trataré de cubrirlos aquí). Dicho esto, son fáciles de implementar.

Una vez que tenga una función que devuelva la distancia, debería poder calcular el ancho y la altura del mapa en términos de distancia entre las esquinas.

Luego, puede calcular la distancia horizontal y vertical de su punto desde la esquina superior izquierda.

Ahora descubres qué proporción del ancho del mapa está representada por la distancia entre el lado izquierdo y tu punto, aplica esa proporción al ancho de píxeles y tienes el número de píxeles entre el lado izquierdo y tu punto. Repita para el eje y.

(Píxeles desde el lado izquierdo) = (ancho total en píxeles) * ((distancia de geocodificación entre la izquierda y su punto) / (distancia de geocodificación entre el lado izquierdo y el lado derecho))

(Píxeles desde arriba) = (altura total en píxeles) * ((distancia de geocodificación entre la parte superior y el punto) / (distancia de geocodificación entre la parte superior e inferior))

EDITAR: A medida que investigue esto, observará que algunas soluciones presentarán resultados más precisos que otras debido al hecho de que se aproxima a la distancia entre dos puntos en una superficie esférica y al mapeo que en una superficie plana. La precisión disminuye a medida que aumenta la distancia. El mejor consejo para usted es probarlo primero y ver si satisface sus necesidades.


Hay muchos esquemas diferentes de proyección de mapas. Tendrías que saber cuáles son las que usan tus mapas.

Para obtener más información sobre los algoritmos de proyección de mapas y la asignación directa / inversa, consulte este enlace . Proporciona las fórmulas para una serie de proyecciones comunes.


Si usa el mapa de tipo Proyección cilíndrica equidistante , esto es lo que debe hacer:

  1. Encuentra la latitud y longitud de tu tutorial de ubicación aquí:
    http://lifehacker.com/267361/how-to-find-latitude-and-longitude
  2. Ingrese esa información en las siguientes fórmulas:
    x = (ancho total de la imagen en px) * (180 + latitud) / 360
    y = (altura total de la imagen en px) * (90 - longitud) / 180

    nota: cuando se utiliza latitud negativa, asegúrese de sumar o restar el número negativo, es decir, + (- 92) o - (- 35), que en realidad sería -92 y +35

  3. Ahora tienes tu X e Y para trazar en tu imagen

    Se puede encontrar más información sobre esta fórmula y el tipo de mapa aquí:
    http://www.progonos.com/furuti/MapProj/Dither/CartHow/HowER_W12/howER_W12.html#DeductionEquirectangular

Solo haz esto (para el mapa de proyección de Mercator):

extension UIView { func addLocation(coordinate: CLLocationCoordinate2D) { // max MKMapPoint values let maxY = Double(267995781) let maxX = Double(268435456) let mapPoint = MKMapPointForCoordinate(coordinate) let normalizatePointX = CGFloat(mapPoint.x / maxX) let normalizatePointY = CGFloat(mapPoint.y / maxY) let pointView = UIView(frame: CGRectMake(0, 0, 5, 5)) pointView.center = CGPointMake(normalizatePointX * frame.width, normalizatePointY * frame.height) pointView.backgroundColor = UIColor.blueColor() addSubview(pointView) } }

Mi proyecto simple para agregar coordenadas en UIView: https://github.com/Glechik/MapCoordinateDrawer


<!DOCTYPE html> <html> <head> <style> #point{font-face:Arial; font-size:18px; color:#FFFF00; width:12px; height:12px;text-shadow: 2px 2px #000000} #canvas {position: absolute; top: 0px; left: 0px; z-index: -2} html, body, #canvas { width: 100%; height: 100%; overflow: hidden; margin: 0 } </style> <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.2/jquery.min.js"></script> <script> $(window).on("load resize",function(e){ var w = $("#canvas").width(); var h = $("#canvas").height(); // New York, NY (https://maps.googleapis.com/maps/api/geocode/json?address=New%20York,%20NY) var lat = 40.91525559999999; var long = -73.70027209999999; var x = ((w/360) * (180 + long)) - 9; var y = ((h/180) * (90 - lat)) - 18; $("#text").text(''X:''+x+'', Y:''+y); $("#point").offset({ top: y, left: x }); }); </script> </head> <body> <div id="text"></div> <div id="point">▼</div> <img id="canvas" border="0" src="http://friday.westnet.com/~crywalt/dymaxion_2003/earthmap10k.reduced.jpg"> </body> </html>