我是loading the google maps API asynchronously它允许您定义回调以在 API 加载时执行。有什么方法可以将参数传递给回调?
编辑:
这是我正在使用的代码。我有一个名为 master
的全局对象,用于存储以下函数。
/**
* Load the Google Maps API
* https://developers.google.com/maps/documentation/javascript/tutorial#Loading_the_Maps_API
*/
loadGoogleMaps: function(){
var googleMaps = document.createElement("script");
googleMaps.type = "text/javascript";
googleMaps.src = "http://maps.googleapis.com/maps/api/js?key=[MYAPIKEY]&sensor=false&callback=master.mapInit";
document.body.appendChild(googleMaps);
}
我希望能够将位置数组传递到 mapInit
中,这样我就可以在 map 初始化时将标记添加到 map 中。我还希望能够全局访问对 map 的引用,以便在创建 map 后对其进行修改。
/**
* 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 map = new google.maps.Map( document.getElementById("map"), mapOptions );
}
最佳答案
我最终解决了将参数传递给回调的需要。
我在 master
对象中创建了一个对象来保存有关特定 map 的信息。每个 map 都有自己定义的回调。它还包含对初始化 map 的引用以及回调需要引用的任何其他 map 特定数据。
/**
* 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
函数以存储对 map 的引用并在 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();
}
我将 map 名称存储在 map 占位符元素的 data-name
属性中。
<div id="map" data-name="mainMap"></div>
关于javascript - 异步加载 google maps V3 时将数据传递给回调,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11129033/