0

jquery-ui-mapを使用して、次のようなGoogleマップインスタンスを作成しています。

$('#CHMap').gmap({
  mapTypeControl : false
}).bind('init', function(evt, map) {
  log("Map initilised");
});

次に、スクリプトの他の場所で、InfoBoxを使用して、次のようにジオロケーションサービスからプルバックされたデータで満たされたスタイル可能な情報ボックスを追加しています。

var boxText = document.createElement("div");
var ib = new InfoBox(myOptions); //myOptions can be ignored for this example

$.each(data, function(name, value) {
  $('#CHMap').gmap('addMarker', {
    id:value['YourId'],
    'position': value['Latitude']+','+value['Longitude'],
    'bounds': true,
    'icon': '/img/gicon.png'
  }).click(function() {
    boxText.innerHTML = "hello";
    ib.setContent(boxText);
    ib.open(map, this);
  });
});

'data'は、Geolocationサービスから返されるオブジェクトです。gmapが最初に作成されたときに、バインドされた「init」関数内に上記の「addMarker」コードを配置すると、infoBoxは正常に表示されます。他の場所で「addMarker」コードを使用すると、コンソールで「Uncaught ReferenceError:mapisnotdefined」エラーが発生します。

「マップ」を正しく参照するにはどうすればよいですか?var map = $('#CHMap').gmap({//options});'jquery-ui-map'のドキュメントでは、gmapが何も返さないことが示唆されているため、実行できないようです。

4

1 に答える 1

0

私はあなたができると思います

var map = $('#CHMap').gmap();

OPからのメモ。最新のプラグインの正しい方法は次のとおりです。

var map = $('#CHMap').gmap('get', 'map');

APIで何も返さないと言っているところがわかりません

マップへのアクセスを実行する必要がある場合は、マップタイルがこのように読み込まれるまで待機するGoogleマップイベントリスナー内にコードを追加できます。

Gmapsはグーグルから非同期でフェッチされるので、このようなことをしない限り、それを呼び出すときにそれがそこにあることを常に確信できるとは限りません。

google.maps.event.addListener(YOUR_GOOGLE_MAPS_INSTACE, 'tilesloaded', function() {
       // put your initialization code in here.
}

したがって、マップが完全にロードされた後にのみ実行されます。

ブラジルから乾杯!

于 2012-10-02T18:54:48.193 に答える