2012-06-20 14 views
11

私はloading the google maps API asynchronouslyです。APIロード時にコールバックを定義することができます。コールバックに引数を渡す方法はありますか?Googleマップを非同期にロードするときにコールバックにデータを渡すV3

EDIT:

ここで私が働いているコードです。私は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に場所の配列を渡すことができるようにしたいです。また、地図の参照にグローバルにアクセスできるようにしたいので、作成後に地図を変更することができます。

どのような必要な引数渡しいくつかのダミー関数の中にあなたの機能をラッピングについて
/** 
* 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); 

} 

答えて

4

としてwrapper()を渡しますコールバックへの引数。

私は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: {} 
    } 
} 

Iは、マップへの参照を格納し、master.mapList.mainMapにコールバックを実行するmapInit機能を改変。

/** 
* 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> 
3

:私は渡す必要の周りに働くことになった

function wrapper() 
{ 
    myCallback(arg1, arg2); 
} 

をし、Googleマップ、コールバック

+0

多分私は誤解していますが、私は別のコールバックを避けようとしています。 –

+0

@ブライアンダウニング:私は完全に失われています。別のラッパーコールバックを作成する必要がない場合は、「いいえ」GoogleマップAPIのURLに引数を渡す方法がありません – zerkms

+0

あなたの答えをありがとう。私は基本的にこのルートを行ったが、実際の引数を 'wrapper()'の中に入れたくなかった。私は基本的にあなたが提案したことをしましたが、DOM要素とグローバルにアクセス可能な個別のオブジェクトに引数として渡したデータの一部を保存しました。 –

関連する問題