2 つの実際の Android フォン (1 つは 2.2.2 を実行し、もう 1 つは 4.2.2 を実行) でマップを正しく表示するのに問題がありました。後者は、マップに関しては常に私にいくらかの悲しみを与えてきました. 部分的に解決したので、これを別のスレッドに入れました。
注: Dreamweaver CS6 で Phonegap Build を使用しています。マニフェスト xml ファイルのない config.xml のみ。
現在、マップが 4.2.2 で正しく機能するためにすべてのドメインをホワイトリストに登録する必要があるという別の問題がありますが、その理由はわかりません。最初に、config.xmlにこれがありました:
<access origin="*.googleapis.com" />
<access origin="*.gstatic.com" />
<access origin="*.google.com" />
<access origin="maps.googleapis.com" />
<access origin="maps.gstatic.com" />
<access origin="mt0.googleapis.com" />
<access origin="mt1.googleapis.com" />
<access origin="csi.gstatic.com" />
これは Android 2.2.2 では完全に機能しましたが、4.2.2 では次の問題が発生します。
- マップの下部にタイルの最後の行がありません (Google マップの src に HTTPS を使用している場合)
- マーカーがまったく表示されない
すべてをホワイトリストに登録するだけで、これらの問題はすべて解消されました。ただし、すべてをホワイトリストに登録したくないので、ここで何か不足しているかどうかを誰かが知っていますか?
どんな助けでも大歓迎です。
編集: *.googleapis.com を使用することで、同様の残りのホワイトリスト ドメインも包含することを理解しています。しかし、私の検索で、iOS ではドメインを明示的にリストする必要があることに何度か気付きました。これは現時点では当てはまらないかもしれませんが、私はこのアプリを iOS で使用することを意図しているので、残しました (完全に役に立たず、不要であると誰かが私に言わない限り ;-)。
//////// 更新 1 ////////
Chrome 開発者ツールの [ネットワーク] タブを調べた後、Google マップからアクセスされるすべての URL を抽出しました。それらのそれぞれを明示的に記述することで、すべてが次のように正常に機能します。
<access origin="https://mts.googleapis.com" subdomains="true"/>
<access origin="https://mts0.googleapis.com" subdomains="true"/>
<access origin="https://mts1.googleapis.com" subdomains="true"/>
<access origin="https://maps.googleapis.com" subdomains="true"/>
<access origin="https://fonts.googleapis.com" subdomains="true"/>
<access origin="https://maps.gstatic.com" subdomains="true"/>
<access origin="https://csi.gstatic.com" subdomains="true"/>
<access origin="https://themes.googleusercontent.com" subdomains="true"/>
これらはおそらく変更される可能性があるため、各ドメインの前にワイルドカード * を使用できればよいのですが、これは機能しません。次の両方を試しましたが、成功しませんでした:
<access origin="*.googleapis.com" subdomains="true"/>
<access origin="*.gstatic.com" subdomains="true"/>
<access origin="*.googleusercontent.com" subdomains="true"/>
<access origin="https://*.googleapis.com" subdomains="true"/>
<access origin="https://*.gstatic.com" subdomains="true"/>
<access origin="https://*.googleusercontent.com" subdomains="true"/>
これらの場合にワイルドカードを使用できない理由について、誰か考えがありますか? 乾杯。
//////// 更新 2 / 回答 ////////
多くの実験の後、私は答えを見つけました。特にサブドメインを許可する場合は、config.xml でタグを記述する方法を非常に具体的にする必要があるようです。明らかにサブドメインの指定はワイルドカードでは機能しないため、タグの 2 つのブロックが必要です。最終的に、次を使用して https を使用して両方のデバイスが正しく動作するようになりました。
<access origin="*.google.com" />
<access origin="*.googleapis.com" />
<access origin="*.gstatic.com" />
<access origin="*.googleusercontent.com" />
<access origin="google.com" subdomains="true"/>
<access origin="googleapis.com" subdomains="true"/>
<access origin="gstatic.com" subdomains="true"/>
<access origin="googleusercontent.com" subdomains="true"/>
うまくいけば、これは誰かに役立つでしょう。古いバージョンの Android でなぜ正常に動作したのか、まだわかりません。たぶん、誰かがそう感じたら、私を啓発するのを助けることができますか?