4

J'ai besoin de convertir les valeurs de longitude en latitude en positions de pixels et de faire le contraire. J'ai trouvé beaucoup de solutions pour aller de lat/lng-> pixel, mais je ne trouve rien à l'inverse.Convertir l'emplacement des pixels en latitude/longitude et vice versa

Quelques notes:

  • La carte est une taille fixe, pas de zoom, pas de tuiles.
  • Je n'ai besoin de rien de très précis, ce n'est pas important.
  • De préférence projection de mercator, mais non requise. Je ne suis pas en train d'afficher le résultat. (Toute projection 2D)
  • Je ne peux pas compter sur les API basées sur le Web de, à savoir: pas Google Maps

Une solution dans presque toutes les langues de programmation serait bien, aussi longtemps qu'il ne repose pas sur les API spécifiques à une plate-forme.

Voici un exemple d'aller de lat/LNG> pixel:

var y = Math.round(((-1 * lat) + 90) * (this.MAP_HEIGHT/180)); 
var x = Math.round((lng + 180) * (this.MAP_WIDTH/360)); 
+1

Vous devez savoir sur quelle projection cartographique le calcul doit fonctionner. L'exemple de calcul dans votre question ne fonctionnera pas pour une carte Mercator; il suppose une [projection équirectangulaire] (http://en.wikipedia.org/wiki/Equirectangular_projection). –

+0

Je suis ouvert à toute projection 2D, equirectangular répondra parfaitement à mes besoins. Je ne visualise pas le résultat, donc je ne suis pas lié à une projection spécifique. –

+0

Si vous n'affichez rien, alors que diable (!) Utilisez-vous les pixels en premier lieu? –

Répondre

5
var y = Math.round(((-1 * lat) + 90) * (this.MAP_HEIGHT/180)); 
var x = Math.round((lng + 180) * (this.MAP_WIDTH/360)); 

Utilisez une algèbre et je suis sorti avec:

var lat=(y/(this.MAP_HEIGHT/180)-90)/-1 
var lng = x/(this.MAP_WIDTH/360)-180 

Pas tout à fait confiance en ce que les mathématiques puisque cela a été fait dans ma tête, mais ceux qui devraient fonctionner, assurez-vous de les tester d'abord.

+0

+1 pour essayer quelque chose qui devrait être évident! –

+0

Il pourrait être évident, par mes compétences en mathématiques sont rouillés. Merci beaucoup, juste ce dont j'avais besoin! –

+2

Quels sont les chiffres? 180, 360 etc? Map_height est également en degrés ou en pixels? –

Questions connexes