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-xhdpi
、drawable-xxhdpi
、drawable-xxxhdpi
、drawable-mdpi
、drawable-ldpi
、drawable-hdpi
ディレクトリにマーカーの画像を保存します。
なお、画像はすべて同じもので OK です。
サイズの変更は不要でした。
修正は以上です!
アプリを実行して確認したところ、マーカーの画像もガビガビにならず、マーカーの位置も正しくなりました!
ちなみに、別の方法として、AndroidManifest.xml
の <application>
タグ内に android:hardwareAccelerated="false"
を追加してもマーカーの位置のずれを修正することはできました。
しかし、開発中のアプリでは、別のところに問題が出たのと、全体的に動作が重くなるというか、動きがカクカクしたので、この方法は不採用になりました…。
以上、Android の osmdroid で地図のマーカーが指定した場所からずれる時の修正方法についてでした。
ご参考になれば幸いです。