我正在开发AIR Android项目,我需要为用户提供从地图中选择位置的选项。其他一切都很完美。我能够将选定的lats和lng从JS转移到AS。但我还希望地图在首次加载时将其位置置于用户所在位置。为此,我按照谷歌地图文档,它在HTML中完美地工作。但事实证明“Geocoder”在StageWebView中不起作用。因此,经过大量的失败后,我决定使用AS3的地理定位服务,并在地图加载时将来自AS3的Lats和Lngs发送给JS。为此,在AS中,我在WebViewLoaded事件中找到用户的位置和用户以下JS注入:
webView.loadURL("javascript:setMapCenter('" + _lats + "', '" + _lngs + "')");
现在这里是JS中的setMapCenter函数:
function setMapCenter(lats, lngs){
ASLats = lats;
ASLngs = lngs;
pos = {
lat: ASLats,
lng: ASLngs
};
// map.setCenter({lat:ASLats, lng:ASLngs});
map.setCenter(pos);
alert("set map center function was called with " + pos.lat + " " + pos.lng);
}
当我运行AIR项目时,打开地图。一旦地图加载,我就会看到警报窗口,显示从AS3收到的lats和lngs。这意味着注入是正确的,并且值正在从AS成功发送到JS。问题是
map.setCenter({lat:ASLats, lng:ASLngs});
或 map.setCenter(POS);
不起作用。地图不能正确居中。但是,当我调用相同的函数时,
window.onload(){};
像这样的
setMapCenter(50.256498, -0.25468);
效果很好。
我真的不明白为什么它不起作用。它变得非常令人沮丧。如果这听起来像一个愚蠢的问题,我很抱歉。我实际上没有JS的经验。这是我第一次使用它。所以任何帮助都会非常感激。