Скрытие и показ маркеров не будут отображаться после перетаскивания в Google Maps - PullRequest
1 голос
/ 03 апреля 2012

Название вроде бы говорит само за себя, у меня есть google maps 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;
}

Ответы [ 2 ]

0 голосов
/ 03 апреля 2012

Если для вашего приложения все в порядке, замените setMap на setVisible (true / false). Когда я попробовал это, это решило вашу проблему.

http://jsfiddle.net/F3XbV/

0 голосов
/ 03 апреля 2012

Вы не сохраняете эту позицию в массиве markers, я думаю, что это может решить проблему, вставьте это в drag событие:

markers[index].setPosition(locationMarker.getPosition());
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...