2012-05-20 1 views
8

Любой знает, почему это будет работать:Передача координаты местоположения на Google Maps в качестве переменной

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

Но это не будет:

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

Я попытался прохождения широты и долготы в виде отдельных переменных, и что тоже не сделал этого. Как успешно передать координаты в качестве переменной? Благодаря!

ответ

17

В этом примере, вы передаете два различных числовых значений в конструктор, а затем назначить вновь созданный объект wickedLocation:

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

В этом примере, вы передаете одно значение строки в конструктор что требует двух различных числовых координат:

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

Типы данных оба совершенно разные.

С учетом сказанного, если вы хотите, чтобы представлять координату как единый объект, вы можете сделать это так:

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

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

Затем, когда вам нужно создать Coords объект от Google, вы можете пройти данные в виде отдельных аргументов, полученных из одного объекта:

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

Спасибо! В этом есть смысл. Какой тип данных вы использовали бы для передачи координат? Массив? – coryetzkorn

+0

Массив, вероятно, будет иметь такую ​​же проблему. Массив будет единственным аргументом, переданным в конструктор, который требует 2 аргумента. – jmort253

+1

@coryetzkorn - Я обновил свой ответ с дополнительной информацией, которая может быть полезна. Вы можете представить координату как объект с 2 свойствами, а затем передать отдельные свойства в виде отдельных аргументов. – jmort253

2

Я считаю, что вы можете использовать строки для определения координат, но вам нужны два (по одному для каждого параметра) не один.

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

Если не использовать либо плавает непосредственно или разобрать ваши строки в поплавки с parseFloat()

+0

Я просто испытал это как мог, и похоже, что это сработает. Он не вызывает никаких ошибок, и результирующие объекты из обоих параметров как строк и параметров как числа одинаковы. Это не в документации, поэтому нет никакой гарантии, что это будет продолжаться. Тем не менее, я бы добавил +1, но у меня нет голосов за день :) – jmort253

6

Если вы получаете координаты в виде строки, в формате, который вы показали в вашем примере, вы можете сделать это:

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