2012-09-09 4 views
3

J'utilise javascript et j'ai les coordonnées GPS sous la forme d'une chaîne de caractères et j'essaie de les mettre au format google.maps.LatLng(59.327383, 18.06747) mais j'ai du mal à décider comment le faire. J'ai une variable:Utiliser une chaîne comme coordonnées GPS

GPSlocation = "(37.700421688980136, -81.84535319999998)" 

et j'ai besoin pour aller dans ce format google.maps.LatLng (num, num). Comment puis-je mettre cette chaîne là?

Merci!

+0

Je ris toujours le nombre de décimales que nous obtenons sur les coordonnées lat/lon. Six DP est suffisant pour vous identifier à dix centimètres. Je m'amuse toujours lorsque nous demandons aux gens d'insister sur des coordonnées à huit ou dix chiffres. Vous avez encore plus que cela, mais c'est plus à des inexactitudes à virgule flottante que n'importe quelle précision. – Spudley

Répondre

9

Vous pouvez utiliser des opérations de chaîne standard pour extraire les valeurs:

var GPSlocation = "(37.700421688980136, -81.84535319999998)"; 
var LatLng = GPSlocation.replace("(", "").replace(")", "").split(", ") 
var Lat = parseFloat(LatLng[0]); 
var Lng = parseFloat(LatLng[1]); 

google.maps.LatLng(Lat, Lng) 
+0

ah super, je savais comment faire ça en Python mais je ne pensais pas pouvoir le faire en JS aussi bien que je le puisse évidemment. Merci! – clifgray

1

Vous pouvez créer un tableau à partir (à l'aide JSON.parse), puis utilisez apply pour « nourrir » les coordonnées à la méthode:

GPSlocation = JSON.parse("(37.700421688980136, -81.84535319999998)" 
          .replace(/^\(/,'[') 
          .replace(/\)$/,']') 
         ); 
google.maps.LatLng.apply(null,GPSlocation); 

Sinon, vous pouvez remplacer les crochets et utiliser split pour créer un tableau , et appelez la méthode LatLng de la manière habituelle. Cette méthode nécessite une conversion supplémentaire à Number des valeurs Array.

GPSlocation = "(37.700421688980136, -81.84535319999998)" 
       .replace(/^\(|\)$/,'') 
       .split(','); 
google.maps.LatLng(+GPSlocation[0],+GPSlocation[1]); 

Pour récupérer un tableau de coordonnées de la chaîne, vous pouvez également utiliser:

GPSlocation = ''.slice.call('(37.700421688980136, -81.84535319999998)', 
          1,this.length-1) 
         .split(',') 
         .map(function(a){return +a;}); 
google.maps.LatLng(GPSlocation[0],GPSlocation[1]);