#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);
});
});
});
}
});