1

Googleマップを使用して、ユーザーが検索した場所の地図を表示する簡単なアプリケーションを作成しようとしています。EclipseでPhonegapプロジェクトを作成しましたが、AndroidとiPhoneで非常にうまく動作しますが、マップはBlackberryでレンダリングされません。テストに使用しているBlackberryはBold9700で、OSv5からOSv6にアップグレードされています。モバイルが「*」サブドメインにアクセスできるようにconfig.xmlを変更しました。コードを実行するときは、キーを使用してGoogleマップを呼び出します。また、Googleマップが読み込まれた後もコードを続行できるように、コールバック関数を必ず含めます。

問題は、アプリケーションがBlackberry Boldで起動されると、マップページが読み込まれ、まったく何も実行されないことです。一方、AndroidおよびiPhoneプラットフォームでマップページが読み込まれると、コールバックがGoogleマップによって呼び出されていることがわかります。なぜこの問題がブラックベリーでのみ発生しているのか、私にはまったくわかりません...私はこの問題を調査して、すでに試した提案を見つけました。私は何かが欠けていることを知っていますが、それが何であるかを理解することはできません。

これは私の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")ことを確認するだけです。codeAddressAndroidとiPhoneで、アラートが表示されます。次に、マップをdiv要素に割り当てます。私が抱えている問題は、BlackberryがGoogleマップに接続していないように見えるため、Googleマップの読み込みが完了したときにコールバックを実行しないことです。

興味があったので、静的マップも試してみましたが、運が悪かったです。忘れている権限はありますか?これは、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マップと新しいバージョンのOSをサポートしていないため、アップグレードされたBlackberryBoldテストデバイスをサポートしていることも読みました。

4

1 に答える 1

1

実は、「ant blackberry build」コマンドをビルドするとき、buildコマンドはconfig.xmlファイルを探して、適切な権限とアクセス権を設定します。PhonegapのオンラインビルドWebサイトもconfig.xmlを使用してアプリを適切に構成しますが、これら2つの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"/>

これらのtryxmlファイルの構文は似ていますが、完全に同じではありません。この変更を行うとすぐに、静的マップを機能させることができました。次のステップは、動的マップを機能させることですが、少なくとも静的マップが機能することはわかっています。

これは私がこの結論に達するためにたどったリンクです

于 2012-05-31T12:06:43.420 に答える