0

私は2つのjsファイルを持っています。最初のものは、緯度、経度、mapOptions、マーカーなどのような Google マップを定義します。

function initialize() {

var myLatlng = new google.maps.LatLng(settings.custom_contact.lat, settings.custom_contact.lng);

var mapOptions = {
  zoom: 13,
  center: myLatlng,
  mapTypeId: google.maps.MapTypeId.ROADMAP
}

var map = new google.maps.Map(document.getElementById('map-canvas'), mapOptions);

var contentString = '';

var marker = new google.maps.Marker({
  position: myLatlng,
  map: map,
  title: ''
}); 
}
google.maps.event.addDomListener(window, 'load', initialize);

2 つ目は、#map-canvas コンテナーを表示するためのいくつかの操作を含んでいます。map-canvas のデフォルトの状態は、display: none です。特定の要素をクリックすると表示されます。ここで、隠しマップの表示に関する一般的な問題であることを読みました。次のコード行を追加する必要があります。

google.maps.event.trigger(map, 'resize');

マップ付きのコンテナを表示する要素をクリックすると。しかし、このコードを配置すると、firebug は「ReferenceError: マップが定義されていません」と通知します。別のファイルにあるので、それは正しいです。これらの 2 つのファイルをマージできません。どうすればこれを管理できますか?

4

1 に答える 1

1

マップ変数をグローバル スコープに配置します。

var map = null;
function initialize() {

var myLatlng = new google.maps.LatLng(settings.custom_contact.lat, settings.custom_contact.lng);

var mapOptions = {
  zoom: 13,
  center: myLatlng,
  mapTypeId: google.maps.MapTypeId.ROADMAP
}

map = new google.maps.Map(document.getElementById('map-canvas'), mapOptions);

var contentString = '';

var marker = new google.maps.Marker({
  position: myLatlng,
  map: map,
  title: ''
}); 
}
google.maps.event.addDomListener(window, 'load', initialize);
于 2013-10-27T16:18:28.337 に答える