Richmarker получить событие.LatLng по клику Google Maps JS API V3

Я применил исправление, как описано здесь, к richmarker.js

Как только я использую

my_rich_marker.addListener('click', function(event) {
    console.log(event); //undefined
}

Что мне нужно, это получить event.latLng RichMarker внутри функции onclick, как это работает с обычным маркером.

2 ответа

Когда вы действительно хотите, чтобы это работало с обычным маркером:

Когда вы нажимаете на обычный маркер latLng-свойство события равно position маркера.

Так что все, что вам нужно сделать, это получить position RichMarker:

google.maps.event.addListener(my_rich_marker,'click',function(e){
  console.log(this.getPosition());
});

Аргумент события, передаваемый в событие "click" для RichMarker, является аргументом из родного события click браузера, которое не имеет .latLng имущество.

из источника RichMarker:

var that = this;
google.maps.event.addDomListener(this.markerContent_, 'click', function(e) {
  google.maps.event.trigger(that, 'click', e);
});

У вас есть два варианта:

  1. измените библиотеку RichMarker, чтобы добавить свойство latLng к возвращаемому событию.

  2. рассчитать связанный latLng из свойств, доступных в родном событии щелчка браузера.

  3. установить свойство latLng возвращаемого события в this.getPosition() (основываясь на ответе доктора Молле):

    google.maps.event.addListener(my_rich_marker, 'click', function(event) {
      event.latLng = this.getPosition();
      console.log(event.latLng.toUrlValue()); 
    }
    
Другие вопросы по тегам