【Titanium】AndroidでMapモジュールが落ちる現象

titanium_android_mapiOS, Androidアプリ開発で、TitaniumのMapモジュールで嵌ったときの覚書。

環境: Titanium SDK 3.3.0 GA, Galaxy S2(Android 4.0.3)

下記エラーが表示されてマップ表示からしばらくしてアプリ自体が落ちる。

[DEBUG] REQUEST: Connection opened to:https://clients4.google.com/glm/mmap/api
[DEBUG] REQUEST: Open Connection
[DEBUG] REQUEST: DRD(65): 62|147
[DEBUG] REQUEST: Close
[DEBUG] REQUEST: Error processing: com.google.maps.api.android.lib6.b.d@416a5da8 not retrying
[DEBUG] REQUEST: Retrying: com.google.maps.api.android.lib6.c.au@418ecd60
[ERROR] REQUEST: ERROR
[ERROR] REQUEST: java.lang.ArrayIndexOutOfBoundsException: length=1; index=1
[ERROR] REQUEST:        at org.appcelerator.titanium.util.TiResponseCache.get(TiResponseCache.java:276)
[ERROR] REQUEST:
[ERROR] REQUEST:        at libcore.net.http.HttpEngine.sendRequest(HttpEngine.java:211)
[ERROR] REQUEST:        at libcore.net.http.HttpURLConnectionImpl.connect(HttpURLConnectionImpl.java:80)
[ERROR] REQUEST:        at libcore.net.http.HttpURLConnectionImpl.getOutputStream(HttpURLConnectionImpl.java:188)
[ERROR] REQUEST:        at libcore.net.http.HttpsURLConnectionImpl.getOutputStream(HttpsURLConnectionImpl.java:280)
[ERROR] REQUEST:        at com.google.maps.api.android.lib6.b.l.run(Unknown Source)
[ERROR] REQUEST:        at java.lang.Thread.run(Thread.java:856)

 

こちらのチケットで報告されている。

私の場合、このエラーは下記のことを試しているうちに表示されなくなった。どれが効いたのかは分からない。

  • API Keyの再発行
  • アプリ削除
  • 端末再起動
  • Resources/android/images/にres-hdpi, res-mdpiを作った
  • annotationを使わなくした

 

ただannotationを表示するとマップを描画する時点でアプリ自体落ちる。

で、いろいろ試して分かった事。注意:Androidのみ

  • annotationのimageプロパティに指定する画像の大きさは共通でなければならない。iOSは別々の大きさでも問題ない。
  • 大きさが同じでもPNG画像で表示される(透明部分の領域)部分に大きな落差があった場合も表示されなかった。
  • 大きさ(サイズ)は最大32x32 64x64@2xみたい
  • 横長の画像(45x30, 90x60@2x)だと表示されなかった
  • 正方形でも15x15, 30x30@2xだと表示されなかった

 

あまりこの手の情報は見当たらないので別の条件があるのかもしれない。

 

< Related Posts >