0

globalSettingsここでいくつかのスレッドを読みましたが、関数でプロパティを使用できないというスコープの問題があることを理解していgoogle.maps.event.addDomListenerます。

console.logステートメントは を返しますがundefined、を返すconsole.log(globalSettings)と、オブジェクトとそのプロパティが表示されます。

プロパティを使用可能にして、マップの中心とズームを初期化するために使用できるようにするにはどうすればよいですか?

var globalSettings = jQuery.parseJSON(wpmm_settings);
var ICON = new google.maps.MarkerImage('medicare.png', null, null,
    new google.maps.Point(14, 13));

var SHADOW = new google.maps.MarkerImage('medicare-shadow.png', null, null,
    new google.maps.Point(14, 13));

google.maps.event.addDomListener(window, 'load', function(globalSettings) {
    console.log(globalSettings.map_center_lat);
  var map = new google.maps.Map(document.getElementById('map-canvas'), {
    center: new google.maps.LatLng(globalSettings.map_center_lat, 135),
    zoom: 4,
    mapTypeId: google.maps.MapTypeId.ROADMAP
  });...
4

1 に答える 1

1

wpmm_settings文字列です:

"[{\"default_zoom\":\"8\",\"map_center_lat\":\"51.4992913\",\"map_center_lng\":\"-0.1639785\"}]"

globalSettingsその文字列を解析した結果です。

[Object { default_zoom="8", map_center_lat="51.4992913", map_center_lng="-0.1639785"}]

一番外側の角かっこのため、単一要素の配列になることに注意してください。

の値はmap_center_latとしてアクセスされglobalSettings[0].map_center_latます。

文字列から最も外側の角かっこを取り除くと、単一の「裸の」オブジェクトが得られ、期待どおりにプロパティにアクセスできます。

それで...

google.maps.event.addDomListener(window, 'load', function(globalSettings) {...

globalSettingsイベント ハンドラに渡されません。イベントが渡されます — これが標準的な動作です。イベントはイベント ハンドラーに渡されます。この行が行うことはglobalSettings、その関数内でwindow.loadイベントに設定されます。そのため、その言及を、関数内で無視できるglobalSettingsようなものに置き換える必要があります。evt

スニペットの of コードにはまだ問題があります...が、オブジェクトとイベント ハンドラーを正しく設定することで、問題を見つけやすくなります。

于 2012-05-07T00:11:05.327 に答える