Ответ 1
Я закончил работу над необходимостью передавать аргументы для обратного вызова.
Я создал объект внутри моего объекта master
для хранения информации о конкретной карте. Каждая карта имеет свой собственный обратный вызов. Он также содержит ссылку на инициализированную карту и любые дополнительные данные карты, на которые должен ссылаться обратный вызов.
/**
* Map listing
*/
mapList: {
mainMap: {
map: "",
callback: function(){
for( var i = 0, length = this.locations.length; i < length; i++ ){
master.placeMapMarker( this.locations[i], this );
}
},
prevInfoWindow: "",
locations: {}
}
}
Я изменил функцию mapInit
, чтобы сохранить ссылку на карту и выполнить обратный вызов в master.mapList.mainMap
.
/**
* Initialize the map
*/
mapInit: function(){
// Default map options
var mapOptions = {
zoom: 4,
center: new google.maps.LatLng( 40, -95 ),
mapTypeId: google.maps.MapTypeId.ROADMAP
}
// Create map
var mapName = $("#map").data("name");
var map = this.mapList[mapName].map = new google.maps.Map( document.getElementById("map"), mapOptions );
this.mapList[mapName].callback();
}
Я сохранил имя карты в атрибуте data-name
в элементе-заполнителе для карты.
<div id="map" data-name="mainMap"></div>