1

我正在尝试创建一个简单的应用程序,它使用 Google 地图来显示用户搜索过的位置的地图。我在 Eclipse 中创建了一个 Phonegap 项目,它在 Android 和 iPhone 中运行良好,但地图在 Blackberry 中不呈现。我用来测试的黑莓是 Bold 9700,它已经从 OS v5 升级到 OS v6。我已经修改了我的 config.xml 以允许移动设备访问“*”子域。当我运行我的代码时,我使用我的密钥调用谷歌地图,并确保包含一个回调函数,以便我的代码在谷歌地图加载后可以继续。

问题是,当应用程序在 Blackberry Bold 上启动时,地图页面加载并且完全没有任何作用。另一方面,当地图页面在 Android 和 iPhone 平台上加载时,我看到回调已被谷歌地图调用。我真的不知道为什么这个问题只发生在黑莓上......我研究了这个问题只是为了找到我已经尝试过的建议。我知道我错过了一些东西,但我无法弄清楚它是什么。

这是我的 HTML 代码:

<body onload="init()">
   <div id="map_canvas">
   </div>
</body>

这是我的 Javascript 代码:

function init(){     
    var script = document.createElement("script");
    script.type = "text/javascript";
    script.src = "http://maps.googleapis.com/maps/api/js?key=GoogleMapKey&sensor=false&callback=codeAddress";
    document.body.appendChild(script);
}

在我的codeAddress回调方法中,我做的第一件事就是alert("hello")确保它codeAddress已被调用。在 Android 和 iPhone 上,我看到了警报。然后我将地图分配给 div 元素。我遇到的问题是黑莓似乎没有联系谷歌地图,因此在谷歌地图加载完成时没有执行回调。

我很好奇,所以我也尝试了一张静态地图,但我也没有运气。是否有一些我忘记的权限?这就是我的 config.xml 中的内容:

  <access subdomains="true" uri="http://gstatic.com"/>
  <access subdomains="true" uri="http://google.com"/>
  <access subdomains="true" uri="http://googleapis.com"/>
  <access subdomains="true" uri="*"/>

我还读到 BB OS v5 不支持 Google 地图以及较新版本的操作系统,因此升级了 Blackberry Bold 测试设备。

4

1 回答 1

1

事实证明,在构建“ant blackberry build”命令时,构建命令会查找 config.xml 文件来设置适当的权限和访问权限。Phonegap 的在线构建网站也使用 config.xml 来正确配置应用程序,但这两个 config.xml 文件的语法并不完全相同。我在哪里:

  <access subdomains="true" uri="http://gstatic.com"/>
  <access subdomains="true" uri="http://google.com"/>
  <access subdomains="true" uri="http://googleapis.com"/>
  <access subdomains="true" uri="*"/>

我应该有

  <access subdomains="true" origin="http://www.gstatic.com"/>
  <access subdomains="true" origin="http://www.google.com"/>
  <access subdomains="true" origin="http://www.googleapis.com"/>

这些 try xml 文件的语法相似但不完全相同。进行此更改后,我就可以使用静态地图。我的下一步是尝试让动态地图工作,但至少我知道静态地图确实有效。

这是我得出这个结论的链接

于 2012-05-31T12:06:43.420 回答