0

我对SWF, 运行Windows 7 Adobe AIR runtimeGoogle 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 取自 google 示例,因此它不应包含任何奇怪的东西...无论如何,我也尝试了由我编写的超最小 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/),但几分钟后有人删除了我的问题。没有人告诉我为什么我的问题必须被删除。

4

1 回答 1

1

不要使用HTMLLoader. 它很方便,但功能不全。而是切换到StageWebView,这是在 AIR 中显示大多数 Web 内容的推荐方式。您将不得不处理它不在显示列表中,但我可以确认它有效。上周我使用它构建了一个 Google Maps Flex 组件,以便在移动设备上使用 Google Maps。

HTMLLoader 使用内置的 AIR Webkit 渲染引擎,它不是一个非常完整的引擎,并且存在很多问题。另一方面,StageWebView 使用系统的浏览器(OS X 和 iOS 上的 Safari,Windows 上的 IE,Android 上的 Chrome/浏览器)来呈现内容,这通常要可靠得多。

我可以确认我的组件(实际上生成一个包含 Maps v3 API 的 HTML 页面)和您提供的链接都可以在 Android、OS X 和 iOS 上使用 StageWebView。我没有要测试的 Windows 计算机,但它也应该在那里工作。

于 2013-09-10T16:17:20.357 回答