Я создал MapObject, который обрабатывает мои функции Google Mapping. Объект собирает все маркеры на карте в массив. (Я использую библиотеку Prototype JS.) Когда создаются маркеры, их событие Click отображается на функцию в MapObject. Все работает, как и ожидалось, за исключением того, что когда я нахожусь в событии Click, я больше не могу получить доступ к Маркеру, который вызвал событие Если я привяжу маркер к обработчику событий, я не смогу получить доступ к методам и свойствам MapObject. Вот пример кода, чтобы показать, что происходит.
MappingObject = Class.create({
initialize: function()
{
try
{
this.geocoder = new google.maps.Geocoder();
this.trucks = $A();
this.truckPic = "Images/TruckIcon.jpg";
}
catch (ex)
{
this.sendToConsole("FAIL! " + ex.toString());
}
},
putTruckOnMapWithLatLong: function(latitude, longitude, title)
{
var marker = this.getNewTruck(this.getNewLatLong(latitude, longitude));
try
{
marker.setTitle(title);
google.maps.event.addListener(marker, "click",
this.truckClickHandler);
this.trucks.push(marker);
}
catch (ex)
{
this.sendToConsole(ex.toString());
}
},
truckClickHandler: function(event)
{
$("dashboardmessage").update(this.getTitle());
this.setIcon("Images/small_smiley.jpeg");
}})
Функция getNewTruck () просто возвращает объект Google Marker. Проблема в том, что «this» в truckClickHandler может ссылаться на MapObject, но тогда я не могу получить доступ к объекту маркера. Если я свяжу маркерный объект как этот ...
google.maps.event.addListener(marker, "click", this.truckClickHandler.bind(marker));
Тогда я больше не могу получить доступ к функциям в MapObject. Буду признателен за любую помощь, которую смогу получить. Спасибо!