我用以下行创建了一个标记
var m = new google.maps.Marker({
然后我添加了一个带有以下行的监听器
m.addListener('click', function(e) {
markerClick(e);
});
但我收到以下错误
未捕获的ReferenceError:未定义markerClick
但我不知道如何调用下面的markerClick函数我发给你代码
https://gist.github.com/YannisKalaijakis/3545eabe2ffc7bfdb07cacfafcb1857c
正如我在你的代码上所做的那样,markerClick
函数是map cmp的一个事件。
所以进入你的addListener函数回调你不仅可以调用markerClick(e)
。
你必须向地图cmp发射一个事件。
你能告诉我听众回调的范围吗?
没有进一步的细节我会说this.markerClick(e)
或this.fireEvent('markerClick', this, e)
您是否尝试将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);
});
});
});
}
});