2013-12-12 71 views
0

我允許用戶重置/重新映射地圖。我發佈了關於它的信息here.爲什麼重置Google地圖後我的標記不能重新顯示?

我添加了應該能夠根據選擇的複選框重新加載標記的代碼。

爲了給你什麼,我談論的想法,下面是當它第一次顯示的網站外觀的屏幕截圖:

enter image description here

如果我從下拉列表中選擇一個不同的看法(任何州或美國50+),然後我可以選擇一個複選框或複選框,它/他們將工作,但我的代碼應該重新繪製基於哪個複選框已被點擊的標記不。

下面是recenters地圖作爲項目的代碼被從下拉列表中選擇的:

$('#stateSelector').on("change",function() { 
    var $this = $(this).val(); 
    if ($this == "USA (48)") 
    { 
     LoadUSA48(); 
    } 
    else if ($this == "USA (50+)") 
    { 
     LoadUSA50(); 
    } 
    else if ($this == "Alabama") 
    { 
     LoadAlabama(); 
    } 
    . . . 
    else if ($this == "Wyoming") 
    { 
     LoadWyoming(); 
    } 
}); 

下面是一個例子Load()方法:

function LoadAlabama() { 
    $("#map").removeData(); 
    $("#map").goMap({ 
     latitude: 32.806673, 
     longitude: -86.791133, 
     zoom: 8 
    }); 
} 

有一個ReloadMarkers()方法在選擇事件結束時調用:

function ReloadMarkers() { 
    if ($('#NFLCheckbox').is(':checked')) { 
     ShowNFLMarkers(); 
    } 

    . . . 

    if ($('#AmMusiciansCheckbox').is(':checked')) { 
     ShowMusiciansMarkers(); 
    } 
} 

ShowX()方法包含所有appropr以下類型的代碼的萊特:

$.goMap.createMarker({ 
    address: 'Green Bay, Wisconsin', 
    title: 'Green Bay Packers', 
    group: 'NFLGroup', 
    icon: constants.nflIcon, 
    html: getPackers() 
}); 

這是因爲如果該複選框的選中狀態不被認可......

回答

1

因爲在你LoadAlabama()函數映射得到重新初始化。標記與舊的地圖對象相關聯。當您從下拉列表中更改選項時,新地圖對象沒有任何關聯的標記。因此showHide將不起作用(因爲地圖上還沒有標記)。

最好的解決方案是將位置的經緯度值存儲在對象或數組中,我猜你已經在做這些了。當你重新初始化地圖時,你需要迭代標記併爲需要顯示的標記設置地圖。事情是這樣的

function setMapForMarkers (mapMarkers) { 
    $(mapMarkers).each(function(i, elm) { 
     elm.setMap(myMap); 
    }); 
} 

function ReloadMarkers() { 
    if ($('#NFLCheckbox').is(':checked')) { 
     setMapForMarkers(NFLGroupMarkers); //NFL Group markers should be an array containing the markers that need to be displayed. 
    } else { 
     //whatever set of markers you want to display here 
    } 

} 

您可以參照這裏的工作示例 https://developers.google.com/maps/documentation/javascript/examples/marker-remove

+0

有趣的;我在該頁面上看不到任何標記;並搗碎「顯示所有標記」按鈕不放置任何... –

+1

你需要點擊地圖先放下標記。之後的其他一切都會起作用。 –

相關問題