2012-05-20 4 views
8

Quelqu'un sait pourquoi cela fonctionnera:emplacement Passing coordonnées à google maps comme variables

var wickedLocation = new google.maps.LatLng(44.767778, -93.2775); 

Mais ce ne sera pas:

var wickedCoords = "44.767778, -93.2775"; 
var wickedLocation = new google.maps.LatLng(wickedCoords); 

J'ai essayé passer la latitude et la longitude variables distinctes et que n'a pas fait l'affaire non plus. Comment puis-je transmettre les coordonnées avec succès en tant que variable? Merci!

Répondre

17

Dans cet exemple, vous passez deux valeurs numériques distinctes dans un constructeur, puis attribuer l'objet nouvellement créé wickedLocation:

var wickedLocation = new google.maps.LatLng(44.767778, -93.2775); 

Dans cet exemple, vous passez une seule valeur de chaîne dans un constructeur cela nécessite deux coordonnées numériques distinctes:

var wickedCoords = "44.767778, -93.2775"; 
var wickedLocation = new google.maps.LatLng(wickedCoords); 

Les types de données sont complètement différents.

Cela dit, si vous voulez représenter une coordonnée comme un objet unique, vous pouvez le faire comme ceci:

var myHome = { "lat" : "44.767778" , "long" : "-93.2775" }; 

var yourHome = { "lat" : "23,454545" , "long" : "-92.12121" }; 

Ensuite, lorsque vous devez créer les coords objet de Google, vous pouvez passer la données arguments individuels provenant d'un seul objet:

var wickedLocation = new google.maps.LatLng(myHome.lat, myHome.long); 
+0

Merci! Ça a du sens. Quel type de données utiliseriez-vous pour transmettre les coordonnées? Un tableau? – coryetzkorn

+0

Un tableau aurait probablement le même problème. Un tableau serait un seul argument passé dans un constructeur qui nécessite 2 arguments. – jmort253

+1

@coryetzkorn - J'ai mis à jour ma réponse avec d'autres informations qui pourraient être utiles. Vous pouvez représenter une coordonnée comme un objet avec 2 propriétés, puis passer les propriétés individuelles en tant qu'arguments individuels. – jmort253

2

Je crois que vous pouvez utiliser des chaînes pour définir les coordonnées, mais vous avez besoin de deux (un pour chaque paramètre) pas.

wickedLat = '44.767778'; 
wickedLon = '-93.2775'; 
wickedLocation = new google.maps.LatLng(wickedLat, wickedLon); 

Dans le cas contraire soit utiliser flotte directement ou analyser vos cordes en flotte avec parseFloat()

+0

Je viens de tester cela du mieux que je pouvais et il semble que cela fonctionnerait. Il ne jette aucune erreur, et les objets résultant des deux params en tant que chaînes et params en tant que nombres sont les mêmes. Ce n'est pas dans la documentation, donc il n'y a aucune garantie que cela continue à fonctionner. Pourtant, je +1, mais je suis hors de vote pour la journée :) – jmort253

6

Si vous obtenez les coordonnées sous forme de chaîne, dans le format que vous avez montré dans votre exemple, vous pouvez faire ceci:

var b=wickedCoords.split(","); 
var wickedLocation=new google.maps.LatLng(parseFloat(b[0]), parseFloat(b[1])); 
Questions connexes