我在这里阅读了一些主题,并且我了解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
});...
答案 0 :(得分: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
之类的内容,你可以在函数内忽略它。
您的代码段中的...
代码仍然存在问题,但正确使用对象和事件处理程序会使查找更容易。