我变得非常疯狂,SWF
,Windows 7 Adobe AIR runtime
,Google Maps Javascript V3
已嵌入超级基本html
页面。
SWF
只需加载后者html
并显示地图。
通过经典2d map
导航效果很好,但是当street view
模式启动时,air
会产生大量的javascript错误。
任何浏览器加载的html
都可以完美运行。
我创建了一个超级简单的SWF
作为概念证明。这是超级最小mxml
源代码:
<mx:WindowedApplication
xmlns:mx="http://www.adobe.com/2006/mxml"
creationComplete="init();"
>
<mx:UIComponent
id="bxMap"
width="100%" height="100%"
/>
<mx:Script>
<![CDATA[
private var _browser:HTMLLoader;
private var _sprite:Sprite;
private function init():void {
_browser = new HTMLLoader();
_browser.width = bxMap.width;
_browser.height = bxMap.height;
_sprite = new Sprite();
_browser.addEventListener(Event.COMPLETE, map_Ready);
_browser.load(new URLRequest("https://google-developers.appspot.com/maps/documentation/javascript/examples/full/map-simple?hl=it"));
}
private function map_Ready(event:Event):void {
_sprite.addChild(_browser);
bxMap.addChild(_sprite);
}
]]>
</mx:Script>
</mx:WindowedApplication>
正如你所看到的,html是从一个谷歌的例子中获取的,所以它不应该包含任何类型的奇怪的东西......无论如何,我也试过我写的超级最小的HTML和同样的问题发生。
这是AIR控制台捕获的典型javascript错误。只需在街景视图中移动鼠标即可生成数百个错误,如下所示:
TypeError: Result of expression 'a' [undefined] is not an object.
Hu at : 2
at : 9
ag at https://maps.gstatic.com/intl/it_it/mapfiles/api-3/14/3/main.js : 25
at https://maps.gstatic.com/intl/it_it/mapfiles/api-3/14/3/main.js : 24
lC at : 13
at : 10
at https://maps.gstatic.com/intl/it_it/mapfiles/api-3/14/3/main.js : 9
at https://maps.gstatic.com/intl/it_it/mapfiles/api-3/14/3/main.js : 19
at https://maps.gstatic.com/intl/it_it/mapfiles/api-3/14/3/main.js : 21
at https://maps.gstatic.com/intl/it_it/mapfiles/api-3/14/3/main.js : 19
at https://maps.gstatic.com/intl/it_it/mapfiles/api-3/14/3/main.js : 21
at https://maps.gstatic.com/intl/it_it/mapfiles/api-3/14/3/main.js : 19
Fr at : 73
at : 72
at https://maps.gstatic.com/intl/it_it/mapfiles/api-3/14/3/main.js : 20
有关为何会发生这种情况以及如何摆脱它的任何想法?
我尝试将此行为通知谷歌(https://code.google.com/p/gmaps-api-issues/),但有人在几分钟后删除了我的问题。没有人告诉我为什么我的问题必须删除。
答案 0 :(得分:1)
不要使用HTMLLoader
。它很方便,但功能不全。相反,切换到StageWebView
,这是在AIR中显示大多数Web内容的推荐方式。您将不得不处理它不在显示列表中,但我可以确认它是有效的。我上周刚刚使用它构建了Google Maps Flex组件,以便在移动设备上使用Google地图。
HTMLLoader使用内置的AIR Webkit渲染引擎,它不是一个非常完整的引擎,并且存在很多问题。另一方面,StageWebView使用系统的浏览器(OS X和iOS上的Safari,Windows上的IE,Android上的Chrome /浏览器)来呈现内容,这通常更加可靠。
我可以确认我的组件(实际生成包含Maps v3 API的HTML页面)和您提供的链接在Android,OS X和iOS上使用StageWebView。我没有Windows计算机可以测试,但也应该在那里工作。