2012-04-03 107 views
1

標題有點說這一切,我有一個谷歌地圖api v3和一切工作正常,除了一個惱人的新功能,我似乎無法修復。隱藏和顯示標記將不會出現在谷歌地圖拖動

您可以通過點擊調用togglePOI()的按鈕來顯示和隱藏標記,但當我拖動標記並單擊隱藏並再次顯示時。除了我一直在拖動的標記之外,所有標記都會出現。所以這種拖拽似乎把事情搞亂了。我一直在頭痛這一個,所以任何幫助將不勝感激。

我不能粘貼所有的代碼在這裏,但如果你想看到一些其他的方面,你認爲造成這種只問和虐待把它英寸

var latlngs = new google.maps.MVCArray(); 

Map init etc 
Marker creation 

google.maps.event.addListener(locationMarker, "drag", function() 
{ 
    var index = findMarkerIndex(locationMarker, 1); 

    if (index >= 0) 
    { 
    var nLatLng = locationMarker.getPosition(); 
    latlngs.setAt(index, nLatLng); 

    var nLat = nLatLng.lat(); 
    var nLng = nLatLng.lng(); 

    var modifiedLocation = { 
     Latitude: nLat, 
     Longitude: nLng 
    }; 

    //SEND OUTPUT TO SELECT BOX 
    locations[index] = modifiedLocation; 
    document.getElementById('locations').options[index] = new Option('Num: ' + index + ' Pois: ' + nLat + ' - ' + nLng, data[4] + ',' + nLat + ',' + nLng + ',' + data[5]); 
    } 
}); 


//FUNCTION CALLED FROM HTML BUTTON 
function togglePOI() 
{ 
    if(togglePOIBool) 
    { 
     for(var i=0;i<markers.length;i++) 
     { 
     if (markers[i].category == 1) //ONLY HIDE CAT 1 
      markers[i].setMap(null); 
     } 
     togglePOIBool = false; 
     $("#togglePOIButton").val('Aan'); 
    } 
    else 
    { 
     for(var i=0;i<markers.length;i++) 
     { 
     if (markers[i].category == 1)//ONLY SHOW CAT 1 
      markers[i].setMap(map); 
     } 
     togglePOIBool = true; 
     $("#togglePOIButton").val('Uit'); 
    } 
} 

// Returns the index of the marker in the polyline. 
function findMarkerIndex(locationMarker, option) 
{ 
    var index = -1; 

    for (var i = 0; i < markers.length; ++i) 
    { 
    if (markers[i] == locationMarker) 
    { 
     index = i; 
     break; 
    } 
    } 

    return index; 
} 

回答

0

如果它是確定您的應用程序,與調用setVisible(真/假)取代的setMap的。當我嘗試這個時,它解決了你的問題。

http://jsfiddle.net/F3XbV/

+0

流不錯的工作就像一個魅力,而且它的方式更快,因爲它不必在所有標記再次裝入感謝。 – 2012-04-04 07:46:18

+0

很高興幫助:) – 2012-04-04 13:28:32

0

您還沒有保存該位置進入markers陣,我認爲它可以解決這個問題,請將這裏面drag事件:

markers[index].setPosition(locationMarker.getPosition());