2013-07-10 129 views
0

我製作了一個Google地圖,以1個標記開頭顯示位置。 從那裏你可以切換位置。然後它會用1個標記顯示新的位置。切換Google地圖切換內容

除了位置切換之外,還可以爲兩個主要位置中的每一個選擇子位置。

我認爲使2個瓦爾(對於每個位置1)將是最好的事情【示例】:

var locationsBerlin = [ 
    ['Berlin 1', 52.519433,13.406746, 1], 
    ['Berlin 2', 52.522606,13.40366, 2], 
    ['Berlin 3', 52.52113,13.409411, 3], 
    ['Berlin 4', 52.517043,13.402394, 4], 
    ['Berlin 5', 52.51703,13.412801, 5], 
    ['Berlin 6', 52.525086,13.399798, 6], 
    ['Berlin 7', 52.525151,13.410741, 7] 
]; 

這是我的選擇「主要」位置。

markerMain = new google.maps.Marker({ 
     position: new google.maps.LatLng(locationsBerlin[0][1], locationsBerlin[0][2]), 
     map: map, 
     icon: customPin 
    }); 

該數組的其餘部分是sublocations。現在我希望用戶能夠按下一個鏈接並顯示var中的其他位置(位置數量是動態的)。

所以我試着做一個函數,點擊切換鏈接後會被調用。

function subLocationBerlin(){ 
    alert("berlin sub"); 
    for (i = 1; i < locationsBerlin.length; i++) { 
     marker = new google.maps.Marker({ 
      position: new google.maps.LatLng(locationsBerlin[i][1], locationsBerlin[i][2]), 
      map: map 
     }); 
     markers.push(marker); 
    } 
} 

但現在我卡住了。出於某種原因,它不會將額外的標記添加到地圖中,我不知道什麼是錯的。

在這裏你可以找到小提琴: http://jsfiddle.net/gvMSX/3/

+0

你有範圍的問題。我得到了「subLocationBerlin沒有在你的小提琴中定義,如果我將它移動到全局範圍,我會得到」locationsBerlin沒有定義「。 – geocodezip

+0

爲什麼要在更改位置時重新初始化包括地圖在內的所有東西? –

+0

@geocodezip感謝您的提及。修正了它,但不知何故,標記仍然沒有顯示。我檢查了螢火蟲的錯誤,但沒有顯示錯誤。http://jsfiddle.net/gvMSX/6/ –

回答

0

你的地圖變量(即初始化,並顯示在地圖中的一個)是本地的初始化函數:

var map = new google.maps.Map(document.getElementById('map-canvas'), mapOptions); 

取出「 var「來初始化全局版本。

還要注意的是JavaScript的數組是基於0的,你將缺少第一標記,當你在初始化我給你1 for循環

function subLocationBerlin(){ 
    console.log('Berlin Sub Called'); 
    for (i = 1; i < locationsBerlin.length; i++) { 
     marker = new google.maps.Marker({ 
      position: new google.maps.LatLng(locationsBerlin[i][1], locationsBerlin[i][2]), 
      map: map 
     }); 
     markers.push(marker); 
     console.log(marker); 
    } 
} 
+0

謝謝,現在感覺啞巴:)我是能夠顯示現在的位置http://jsfiddle.net/gvMSX/7/ 索引從1開始,因爲索引0是主要位置,數組中的其餘部分是子位置,至少這是個想法。這個 被認爲是不好的做法讓我知道:) –