【问题标题】:Using StageWebView.loadString() to display Google Maps on AIR for iOS使用 StageWebView.loadString() 在 AIR for iOS 上显示 Google 地图
【发布时间】:2013-10-02 18:46:08
【问题描述】:

我正在尝试使用StageWebView 来显示使用 Javascript API 生成的 Google Maps 地图。它不会在iOS上呈现有什么原因吗?它适用于 Android 和 AIR 模拟器,但不适用于 iOS 设备。我也可以查看在 Safari 中生成的 HTML,这就更奇怪了。

示例 HTML(我是在应用内动态生成此内容,并不重要):

<!DOCTYPE HTML>
<html style="width:100%; height:100%; margin: 0; padding: 0;">
    <head>
<title></title>
        <script src="https://maps.googleapis.com/maps/api/js?v=3.exp&sensor=false"></script>
        <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>
        <script type="text/javascript">
        $(document).ready(function(e){
            var myLatlng = new google.maps.LatLng( 0,0);
            var mapOptions = {
                zoom: 18,
                center: myLatlng,
                mapTypeId: google.maps.MapTypeId.ROADMAP,
                mapTypeControl: true,
                zoomControl: true,
                zoomControlOptions: {
                    style: google.maps.ZoomControlStyle.DEFAULT
                }
            }
            var map = new google.maps.Map(document.getElementById("maps") , mapOptions);
            geocoder = new google.maps.Geocoder();
            geocoder.geocode( { "address": "90 South Kyrene, Chandler, AZ 85226" }, function(results, status) {
                if (status == google.maps.GeocoderStatus.OK) {
                    map.setCenter(results[0].geometry.location);
                    var marker = new google.maps.Marker({
                      map: map,
                      position: results[0].geometry.location
                    });
                }
            });
       });
    </script>
    </head>
    <body style="width:100%; height:100%; margin: 0; padding: 0;">
        <div id="maps" style="width:100%; height:100%;  margin: 0; padding: 0;"></div>
    </body>
</html>

我正在使用StageWebView.loadString( html, "text/html" ); 加载它。知道为什么它不渲染吗?加载 URL 似乎可以工作(所以我会尝试将 HTML 保存到磁盘并加载它,接下来)很好,只是不加载字符串。

在 iOS 6 和 iOS 7 以及 AIR 3.8 和 3.9 上测试

编辑: 作为后续,将 HTML 文件保存到磁盘,然后通过 StageWebView.loadURL() 加载它就可以了。不过,仍然很好奇为什么通过 loadString() 加载它不起作用。

【问题讨论】:

    标签: javascript ios actionscript-3 google-maps air


    【解决方案1】:

    我认为这与 iOS javascript 沙盒和 StageWebView API 的工作方式有关。前段时间我试图用 twitter 服务做类似的事情来跳过 pin 验证,但似乎 ios 不会让你从你的应用程序中执行 javascript。

    您可以尝试使用本机 webview 扩展来解决此问题。 stagewebviewbridge 有一个 loadString 方法,应该适用于 javascript。

    您可以使用本机扩展程序来进行地图浏览。如果您的应用是 ios 独有的,您可以查看:air-maps-ane 或者您可以使用MapQuest API。我在一个 android/ios 应用中使用过,效果很好。

    【讨论】:

    • 这就是我认为正在发生的事情。 iOS 会阻止应用程序执行 JS 是有道理的。无论如何,将文件保存到磁盘就可以了。我过去使用过 MapQuest API,我一直觉得它的加载速度很慢。不过,我可能会求助于它,因为让 StageWebView 在滚动器中正常运行几乎是不可能的。无论如何,我会把你的标记为正确的。到目前为止我见过的最佳答案。谢谢。
    【解决方案2】:

    尝试删除&lt;!DOCTYPE HTML&gt;标签 我之前也有同样的问题,删除&lt;!DOCTYPE HTML&gt;后页面渲染正确

    【讨论】:

    • -1,这只是进入怪癖模式,这是非常不可取的。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-12-31
    • 1970-01-01
    • 1970-01-01
    • 2015-05-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多