标题有点说明了一切,我有一个谷歌地图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 :(得分:0)
您没有将该位置保存到markers
数组中,我认为它可以解决问题,将其插入drag
事件中:
markers[index].setPosition(locationMarker.getPosition());
答案 1 :(得分:0)
如果你的应用程序没问题,用setVisible(true / false)替换setMap。当我尝试这个时,它解决了你的问题。