私は1週間前に同様の質問をしましたが、私の問題に対する実際の答えはありませんでした。それは私が自分の問題を明らかにした方法によるものです。
私はjquerygooglemapプラグインを書いているので、次のようなことができます:
var my_map = $('#map').plugin();
my_map.addMarker( 'Melbourne, Australia' );
my_map.addMarker( 'New York, USA' );
console.log ( my_map.getMarkers() ); // how to return markers array here ?
マーカーを追加するには、住所を緯度と経度に変換するgooglegeocodeを使用します。応答を受け取ったら、マーカーをマップに追加して配列に保存します。
それはすべて正常に機能しています。マーカー配列を取得するために、プラグインでこれを実行しました。
self.getMarkers = function()
{
self._deferred.done( function()
{
// I need to pass this to the outer scope
console.log( 'Deferred done :' , self.markers );
return self.markers;
});
}
self.markers
使用せずに戻っただけdeferred
では、応答がまだ戻っていないため配列は空になりますが、使用するdeferred
と、配列を外部スコープに渡すことができません。
また、プラグインを使用している開発者がこれを行う必要はありません:
my_map.done( function( markers ) {
// code
});
約束を返すことでそれを行うことができますが、行うだけでマーカー配列を取得したいと思いますmy_map.getMarkers()
問題が明確であることを願っています。そうでない場合は、説明を求めてください。完全なコードを確認する必要がある場合は、ここにあります:http: //jsfiddle.net/Vy4da/