Маркер на Google Map добавляется только один раз - PullRequest
0 голосов
/ 24 марта 2010

Каждый раз, когда я нажимаю на карту, на карте появляется новый маркер. Проблема в том, что мне нужен только один маркер, и если я нажимаю несколько раз, каждый раз добавляется новый маркер.

Как изменить код так, чтобы размещался только один маркер, и при повторном нажатии на карту он меняет свое местоположение?

Вот мой код:

function clicked(overlay, latlng) {
  var icon3 = new GIcon();
  icon3.image = "marker.png";  
  icon3.iconAnchor = new GPoint(15, 40);

  var marker2 = new GMarker(latlng, {  icon: icon3, draggable: true,   title: 'Drag me'  });
   map.addOverlay(marker2);

}

Ответы [ 3 ]

1 голос
/ 24 марта 2010

Я бы порекомендовал оставить экземпляр marker2 вне функции clicked, тогда, если marker2 имеет значение null, создайте и добавьте новый такой, как вы сейчас, в противном случае вызовите marker2.<a href="http://code.google.com/apis/maps/documentation/reference.html#GMarker.setLatLng" rel="nofollow noreferrer">setLatLong</a>(latlng);, чтобы обновить его местоположение.

Не проверенный пример кода:

var marker2;

function clicked(overlay, latlng) {
  if (marker2 == null) {
    var icon3 = new GIcon();
    icon3.image = "marker.png";  
    icon3.iconAnchor = new GPoint(15, 40);

    marker2 = new GMarker(latlng, {  icon: icon3, draggable: true,   title: 'Drag me'  });
    map.addOverlay(marker2);
  }
  else {
    marker2.setLatLong(latlng);
  }
}
0 голосов
/ 25 марта 2010

Ну, не беспокойтесь, я понял это сам. Я просто использовал map.clearOverlays (); прежде чем маркер помещается, и это решило проблему.

0 голосов
/ 24 марта 2010

Вам нужно будет выполнить какую-то проверку, чтобы увидеть, был ли уже установлен маркер. Один из вариантов - сохранить список уже добавленных маркеров и проверить этот список на наличие маркера в определенной точке, прежде чем вызывать функции для добавления маркера на карту. Если вам нужен пример кода, дайте мне знать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...