Javascript Google Maps JS API v3将不会加载到Flex Mobile StageWebView中

Javascript Google Maps JS API v3将不会加载到Flex Mobile StageWebView中,javascript,actionscript-3,apache-flex,google-maps-api-3,flex4.5,Javascript,Actionscript 3,Apache Flex,Google Maps Api 3,Flex4.5,我正在尝试在Flex移动应用程序中加载一个带有Google Maps Javascript API的StageWebView,作为Google Maps API for Flash不在iOS上工作的变通方法。我正在使用stageWebView.loadString()方法。下面是正在加载的HTML.Javascript的相关部分 我的问题是,当我在浏览器(即Chrome和Safari)和Flash Builder iPhone/iPad模拟器中查看这些内容时,一切都能完美运行。在实际设备上,映射

我正在尝试在Flex移动应用程序中加载一个带有Google Maps Javascript API的StageWebView,作为Google Maps API for Flash不在iOS上工作的变通方法。我正在使用stageWebView.loadString()方法。下面是正在加载的HTML.Javascript的相关部分

我的问题是,当我在浏览器(即Chrome和Safari)和Flash Builder iPhone/iPad模拟器中查看这些内容时,一切都能完美运行。在实际设备上,映射从不加载,通过一些try..catch语句,我能够识别出我得到了“TypeError:“undefined”不是构造函数”错误,这些错误是由我在下面的initialize函数中列出的每一行抛出的

对可能出现的问题有什么想法吗

  <!DOCTYPE html>
  <html>
    <head>
      <meta name="viewport" content="initial-scale=1.0, user-scalable=no" />
      <style type="text/css">
        html { height: 100% }
        body { height: 100%; margin: 0; padding: 0 }
        #map_canvas { height: 100% }
      </style>
      <script type="text/javascript"
        src="http://maps.googleapis.com/maps/api/js?v=3&key=MY_KEY&sensor=true">
      </script>
      <script type="text/javascript">
        /* a bunch of variables and functions */
        function initialize() {
          var myOptions = { center: new google.maps.LatLng(43.476302, -80.4816062), zoom: 12, mapTypeId: google.maps.MapTypeId.ROADMAP };
          map = new google.maps.Map(document.getElementById("map_canvas"), myOptions);
          geocoder = new google.maps.Geocoder();
          dirDisplay = new google.maps.DirectionsRenderer();
          /* some other stuff */
        }
        if(window.addEventListener) window.addEventListener("load", initialize, true); else window.onload = initialize;
      </script>
    </head>
    <body>
      <div id="map_canvas" style="width:100%; height:100%;" ></div>
      <div id="dirPanel" style="width:100%;" ></div>
    </body>
  </html>

有没有想过为什么会不同?或者我可以做些什么来让Maps API正常工作?

外部脚本是否正在加载肯定是可疑的。我的猜测是,由于连接或权限的原因,您无法下载导致错误的外部脚本

在使用google变量之前,请尝试测试它是否已定义

if (typeof google !== 'undefined') {
    // Use google
} else {
    // Warn the user they may not be connected to the internet?
}
如果您认为所有设置都正确,请尝试将脚本放在外部位置,并从该扩展位置加载页面,即,不要使用
stageWebView.loadString()
try
stageWebView.loadURL()
仅用于测试。如果未加载,您可能拒绝了应用程序的internet访问。我不确定这在iOS上到底是如何工作的,但建议您在尝试访问资源时询问这一点-如下所示:


这可能会解决您的问题,也可能不会解决您的问题,但我希望这个答案将对那些在使用.loadString()时被发现的人有所帮助。当您已经看到实际上是从字符串加载的web内容时,很容易忘记检查您是否确实可以访问internet。

外部脚本是否正在加载肯定是可疑的。我的猜测是,由于连接或权限的原因,您无法下载导致错误的外部脚本

在使用google变量之前,请尝试测试它是否已定义

if (typeof google !== 'undefined') {
    // Use google
} else {
    // Warn the user they may not be connected to the internet?
}
如果您认为所有设置都正确,请尝试将脚本放在外部位置,并从该扩展位置加载页面,即,不要使用
stageWebView.loadString()
try
stageWebView.loadURL()
仅用于测试。如果未加载,您可能拒绝了应用程序的internet访问。我不确定这在iOS上到底是如何工作的,但建议您在尝试访问资源时询问这一点-如下所示:


这可能会解决您的问题,也可能不会解决您的问题,但我希望这个答案将对那些在使用.loadString()时被发现的人有所帮助。当你已经看到从字符串加载的web内容时,很容易忘记检查你是否确实可以访问internet。

通过Alexander Farber的建议,我决定使用,这已被证明非常有效。

通过Alexander Farber的建议,我决定使用,这被证明是非常有效的。

问得好,因为谷歌不再支持Flash/Flex Maps API,并告诉大家使用JS Maps API。问得好,因为谷歌不再支持Flash/Flex Maps API,并告诉大家使用JS Maps API。感谢您的及时回复!我在
initialize()
的开头添加了一个警报,告诉我google和google.maps的类型,它们都返回了
object
。我知道Flex应用程序可以访问Internet—我通过应用程序前面的
StageWebView.loadURL()
方法加载StageWebView。我无法从外部位置加载该文件,之所以选择使用
StageWebView.loadString()
,是因为我需要在运行时通过Flex应用程序更改其内容。感谢您的及时响应!我在
initialize()
的开头添加了一个警报,告诉我google和google.maps的类型,它们都返回了
object
。我知道Flex应用程序可以访问Internet—我通过应用程序前面的
StageWebView.loadURL()
方法加载StageWebView。我无法从外部位置加载该文件,之所以选择使用
StageWebView.loadString()
,是因为我需要在运行时通过Flex应用程序更改其内容。不幸的是,MapQuest将于2017年6月因Flex/Flash退役。不幸的是,MapQuest将于2017年6月因Flex/Flash退役。