2012-04-03 106 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());