Сенча extJS маркер на карте Google не нажимает - PullRequest
0 голосов
/ 08 марта 2019

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

var m = new google.maps.Marker({

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

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

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

Uncaught ReferenceError: маркерClick не определен

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

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

Ответы [ 2 ]

0 голосов
/ 13 марта 2019

Вы пытались определить 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);
                });
            });
        });
    }
});
0 голосов
/ 08 марта 2019

Насколько я могу сказать, код markerClick был событием карты cmp.

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

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

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

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

...