Sencha extJS谷歌地图标记没有点击

问题描述 投票:0回答:2

我用以下行创建了一个标记

var m = new google.maps.Marker({

然后我添加了一个带有以下行的监听器

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

但我收到以下错误

未捕获的ReferenceError:未定义markerClick

但我不知道如何调用下面的markerClick函数我发给你代码

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

extjs google-maps-markers extjs6
2个回答
0
投票

正如我在你的代码上所做的那样,markerClick函数是map cmp的一个事件。

所以进入你的addListener函数回调你不仅可以调用markerClick(e)

你必须向地图cmp发射一个事件。

你能告诉我听众回调的范围吗?

没有进一步的细节我会说this.markerClick(e)this.fireEvent('markerClick', this, e)


0
投票

您是否尝试将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);
                });
            });
        });
    }
});
© www.soinside.com 2019 - 2024. All rights reserved.