Маркер карты Google Sencha ExtJS не щелкает

#extjs #google-maps-markers #extjs6

#extjs #google-карты-маркеры #extjs6

Вопрос:

Я создал маркер со следующей строкой

 var m = new google.maps.Marker({
  

и затем я добавил прослушиватель со следующими строками

 m.addListener('click', function(e) {
                    markerClick(e);
             });
  

но я получаю следующую ошибку

Ошибка неперехваченной ссылки: не определен markerClick

но я не знаю, как вызвать функцию markerClick, ниже я отправляю вам код

https://gist.github.com/YannisKalaijakis/3545eabe2ffc7bfdb07cacfafcb1857c

Комментарии:

1. Переместите markerClick в тело MapController и вызовите его в любом месте, где вам нужно, с помощью этого.markerClick

Ответ №1:

Насколько я могу судить по вашему коду, markerClick функция была событием cmp карты.

Таким образом, в обратном вызове вашей функции addListener вы можете не только вызывать markerClick(e) .

Вы должны запустить событие для cmp карты.

Не могли бы вы указать мне область для обратного вызова вашего слушателя, пожалуйста?

Без дальнейших подробностей я бы сказал this.markerClick(e) или this.fireEvent('markerClick', this, e)

Комментарии:

1. ну, markerClick определен в этой конфигурации области: { прослушивание: { компонент: { ‘map’: { markerClick: функция (маркер) { пока прослушиватель находится в initMarker, как вы можете видеть в gist

Ответ №2:

Вы пробовали определять markerClick как функцию MapController?

     Ext.define('Wp.view.map.MapController', {
    extend: 'Ext.app.ViewController',
    alias: 'controller.map',
    requires: [
        'Ext.container.Container',
        'Ext.layout.container.Border',
        'Ext.ux.GMapPanel',
        'Ext.ux.IFrame',
        'Ext.window.Window'
    ],
    config: {
        listen: {
            // The fireEvent() is coming from a component so we listen on the component event domain
            component: {
                // The component we are listening to is alias : map
                'map': {
                    // The fireEvent() from the map component
                    markerClick: this.markerClick
                }
            }
        }
    },

    markerClick: function (marker) {
       // your code...
    },

    initMarker: function () {
        debugger;
        var me = this,
                map = me.getView(), //Reference to map view
                store = map.getViewModel().getStore('Markers'), // Get the store from the ViewModel
                data;

        var map = new google.maps.Map(document.getElementById('gmap'), {
            zoom: 6,
            center: {
                lat: 31,
                lng: 31
            },
            disableDefaultUI: true,
            zoomControl: true
        });

        store.load(function (records) {
            Ext.each(records, function (record) {
                // more code...
                m.addListener('click', function (e) {
                    this.markerClick(e);
                });
            });
        });
    }
});