Google maps 在谷歌地图中拖动后,隐藏和显示标记不会出现

Google maps 在谷歌地图中拖动后,隐藏和显示标记不会出现,google-maps,google-maps-api-3,Google Maps,Google Maps Api 3,标题说明了一切,我有一个谷歌地图api v3,除了一个恼人的新功能外,一切都很好,我似乎无法修复 您可以通过单击调用togglePOI的按钮来显示和隐藏标记,但当我拖动标记并再次单击隐藏和显示时。所有的标记都会出现,除了我一直在拖动的标记。因此,拖延似乎把事情搞得一团糟。我一直为这件事感到头疼,所以任何帮助都将不胜感激 我不能把所有的代码都粘贴在这里,但是如果你想看到一些你认为是导致这种情况的其他方面,只要问一下,我就会把它放进去 var latlngs = new google.maps.MV

标题说明了一切,我有一个谷歌地图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;
}

您没有将该位置保存到markers数组中,我认为它可以解决问题,插入此内部拖动事件:


如果您的应用程序没有问题,请将setMap替换为setVisibletrue/false。当我尝试这个时,它解决了你的问题


ow nice就像一个魔咒,它的速度更快,因为它不必再次加载所有的标记,谢谢。
markers[index].setPosition(locationMarker.getPosition());