2012-05-20 66 views
8

誰知道爲什麼這將工作:傳遞位置座標谷歌地圖可變

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從谷歌的對象,你可以通過從單個對象導出個人數據參數:

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]));