Google Maps/Javascript 地图“未定义”问题
希望有人能解决我遇到的这个(希望是简单的)问题。
我们有一个 Google 地图,它从 Web 服务中提取地理编码数据,并返回结果数组。
此外,它对用户的英国邮政编码进行地理编码,并在地图上他们的位置上绘制一个黄色的“家”标记。
这在 IE 中运行良好,但标记不会显示在 Safari 或 Firefox 中。
在 Firefox 错误控制台中,我们返回“地图未定义”。我已将其缩小到该行,但目前找不到解决此问题的方法。
~请注意,我的代码尚未简化,因此某些地方可能存在一些不必要的 js 代码。但我希望能够尽快与我们的用户一起进行 Beta 测试。~
链接到服务....
http://www.stratford.gov.uk/labs/nhs/
输入 CV37 6HX 作为测试邮政编码,然后在搜索之前从任何单选按钮选项中进行选择。
干杯!
西蒙
当我在 IE7 中分析错误时,我发现当您获得触发 localSearch2.setSearchCompleteCallback 的回调时,map 变量未定义。
您应该在开始搜索之前检查初始化地图的函数 loadMap() 是否已成功完成。我看到您使用
google.setOnLoadCallback(loadMap);
对其进行了初始化。
这只会在“load”事件上加载地图。看来您的回调触发得太早了,在初始化地图之前:您在调用时触发搜索
newMarker2(UserPostcode, UserIcon);
这是在执行期间完成的,在 loadMap 函数被“load”事件触发之前。
查看此处发生的情况的最佳方法是在 Firebug 中的第 31 行和第 153 行上放置断点。这样,您将看到在第 31 行初始化地图之前调用了“map.addOverlay(usermarker);”。
在“/// 通过地理编码他们的邮政编码来映射用户位置”注释行下,您有相当多的代码不在函数内。浏览器可以随时执行未由某种 onload 回调执行的代码(通常,但并非总是,一旦加载了整个 javascript 标记)。这就是为什么您会在不同的浏览器中看到不一致的行为。在最坏的情况下,它甚至可能在重新加载时不一致。
要解决此问题,您应该将此代码放在函数中并像对 loadMap 函数(“google.setOnLoadCallback(loadMap);”)那样调用它,或者简单地从 loadMap 函数中调用它。
希望这能有所帮助。