【Android】osmdroidの地図マーカーが指定した緯度経度からずれる

Android で osmdroid を使って地図とマーカーを表示しているのですが、吹き出しを表示した時にマーカーの位置とずれていることが判明しました。
最初は吹き出しの位置がズレているのかと思いましたが、地図を拡大・縮小すると、マーカーの位置が大きくずれたため、恐らくマーカーの方がズレているようでした。

修正にあたり、参考にさせていただいた記事はこちらから。

Markers moving when zooming (Android 28) · Issue #1349 · osmdroid/osmdroid
https://github.com/osmdroid/osmdroid/issues/1349

 

修正方法は、まず下記の setLayerType() を追加します。

MapView mapView;
.......
mapView.setLayerType(View.LAYER_TYPE_SOFTWARE, null);

上記のコードだと、3行目です。
マーカーのずれ自体はこれで修正できるのですが、マーカーの画像を変更していると画像がガビガビになる場合があるので、drawable-xhdpidrawable-xxhdpidrawable-xxxhdpidrawable-mdpidrawable-ldpidrawable-hdpi ディレクトリにマーカーの画像を保存します。
なお、画像はすべて同じもので OK です。
サイズの変更は不要でした。
修正は以上です!
アプリを実行して確認したところ、マーカーの画像もガビガビにならず、マーカーの位置も正しくなりました!

ちなみに、別の方法として、AndroidManifest.xml<application> タグ内に android:hardwareAccelerated="false" を追加してもマーカーの位置のずれを修正することはできました。
しかし、開発中のアプリでは、別のところに問題が出たのと、全体的に動作が重くなるというか、動きがカクカクしたので、この方法は不採用になりました…。

 

以上、Android の osmdroid で地図のマーカーが指定した場所からずれる時の修正方法についてでした。
ご参考になれば幸いです。

>株式会社シーポイントラボ

株式会社シーポイントラボ

TEL:053-543-9889
営業時間:9:00~18:00(月〜金)
住所:〒432-8003
   静岡県浜松市中央区和地山3-1-7
   浜松イノベーションキューブ 315
※ご来社の際はインターホンで「316」をお呼びください

CTR IMG