0

我正在尝试使用 aStageWebView来显示使用 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()不起作用。

4

2 回答 2

2

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

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

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

于 2013-10-05T23:11:13.630 回答
-1

尝试删除<!DOCTYPE HTML>标签我之前有同样的问题,删除<!DOCTYPE HTML>正确呈现的页面后

于 2013-11-19T08:52:29.777 回答