浜松のWEBシステム開発・スマートフォンアプリ開発・RTK-GNSS関連の開発はお任せください
株式会社シーポイントラボ
TEL:053-543-9889
営業時間:9:00~18:00(月〜金)
住所:静岡県浜松市中区富塚町1933-1 佐鳴湖パークタウンサウス2F

【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 で地図のマーカーが指定した場所からずれる時の修正方法についてでした。
ご参考になれば幸いです。

  • この記事いいね! (0)