AIR和谷歌地图Javascript V3街景

时间:2013-09-10 15:46:51

标签: javascript google-maps-api-3 air google-street-view

我变得非常疯狂,SWFWindows 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是从一个谷歌的例子中获取的,所以它不应该包含任何类型的奇怪的东西......无论如何,我也试过我写的超级最小的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/),但有人在几分钟后删除了我的问题。没有人告诉我为什么我的问题必须删除。

1 个答案:

答案 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计算机可以测试,但也应该在那里工作。