我試圖在Flex Mobile應用程序內加載一個帶有Google Maps JavaScript API的StageWebView,作爲Google Maps API for Flash的解決方法,不適用於iOS。我正在使用stageWebView.loadString()方法。以下是正在加載的HTML.Javascript的相關部分。Google Maps JS API v3不會在Flex Mobile內部加載StageWebView
我的問題是,當我在瀏覽器(IE,Chrome和Safari)以及Flash Builder iPhone/iPad模擬器中查看時,所有內容都能正常工作。在實際的設備上,map永遠不會加載,通過一些try..catch語句,我能夠識別出我得到的「TypeError:'undefined'不是構造函數」錯誤,這些錯誤是由我列在內部的每一行引發的下面的初始化函數。
有關可能出錯的任何想法?
<!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>
編輯:我檢查一下google.maps包含的對象,驚訝地發現,不同對象出現在瀏覽器中,與Map
,Polyline
,Marker
,Geocoder
,以及其他子對象的主機,由iOS設備呈現的版本看起來像這樣:
google.maps {
modules:Object,
Load:function (apiLoad) { delete google.maps.Load; apiLoad([/*lots of stuff I don't feel like copying out by hand*/], loadScriptTime); },
_gjsload_:function (name, text) { modules[name] = text; }
}
有什麼想法爲什麼它不同?或者我可以做些什麼來使Maps API發揮作用?
好的問題是Google不再支持Flash/Flex Maps API,並告訴每個人都使用JS Maps API。 – 2012-03-07 12:39:49