OSMDroid - 默认标记在 Android API 28 上缩小时移动
OSMDroid - Default marker moving when zooming out on Android API 28
我最近开始使用 OSMDroid,但我很难在 Android API 28 上的特定地理点获得默认标记。
我按照 OSMDroid 的 Github 的教程编写了如下代码:
//Making a Mapbox TileSource
MapBoxTileSource mbTest = new MapBoxTileSource("mapbox.streets", ACCESS_TOKEN);
map = (MapView) findViewById(R.id.map);
map.setTileSource(mbTest);
//Setting up map
map.setVisibility(View.VISIBLE);
map.setMultiTouchControls(true);
map.getController().setCenter(new GeoPoint(latitude,longitude));
map.getController().setZoom(14d);
//Create a marker where the user is
Marker positionMarker = new Marker(map);
positionMarker.setDefaultIcon();
positionMarker.setPosition(new GeoPoint(latitude, longitude));
map.getOverlays().add(positionMarker);
我在测试我的应用程序时得到了以下结果(我使用 OSMDroid 绘制了一个多边形,它似乎工作正常):
我在 Android API 22 设备上测试了同一个应用程序,标记工作正常,在缩放级别缩放时位于并停留在正确的位置。
有什么方法可以修复或改进我的代码,使标记在 API 28 上工作?
我看了一些关于 OSMDroid 的文档,似乎硬件加速并不总是稳定的。我试着停用它,但它起作用了。
因此,如果您的标记似乎不在正确的位置并且在放大或缩小时移动,只需在 Android 清单中为此 activity 停用硬件加速:
<activity
android:name=".MapActivity"
android:hardwareAccelerated="false"/>
编辑:我已经进一步使用 OSMDroid,当我为我的标记使用自定义图标时不会出现这个问题,所以这对您的应用来说应该不是什么大问题。
mapView.setLayerType(View.LAYER_TYPE_SOFTWARE, null)
可以解决。
这不是我的解决方案,here
我最近开始使用 OSMDroid,但我很难在 Android API 28 上的特定地理点获得默认标记。 我按照 OSMDroid 的 Github 的教程编写了如下代码:
//Making a Mapbox TileSource
MapBoxTileSource mbTest = new MapBoxTileSource("mapbox.streets", ACCESS_TOKEN);
map = (MapView) findViewById(R.id.map);
map.setTileSource(mbTest);
//Setting up map
map.setVisibility(View.VISIBLE);
map.setMultiTouchControls(true);
map.getController().setCenter(new GeoPoint(latitude,longitude));
map.getController().setZoom(14d);
//Create a marker where the user is
Marker positionMarker = new Marker(map);
positionMarker.setDefaultIcon();
positionMarker.setPosition(new GeoPoint(latitude, longitude));
map.getOverlays().add(positionMarker);
我在测试我的应用程序时得到了以下结果(我使用 OSMDroid 绘制了一个多边形,它似乎工作正常):
我在 Android API 22 设备上测试了同一个应用程序,标记工作正常,在缩放级别缩放时位于并停留在正确的位置。
有什么方法可以修复或改进我的代码,使标记在 API 28 上工作?
我看了一些关于 OSMDroid 的文档,似乎硬件加速并不总是稳定的。我试着停用它,但它起作用了。
因此,如果您的标记似乎不在正确的位置并且在放大或缩小时移动,只需在 Android 清单中为此 activity 停用硬件加速:
<activity
android:name=".MapActivity"
android:hardwareAccelerated="false"/>
编辑:我已经进一步使用 OSMDroid,当我为我的标记使用自定义图标时不会出现这个问题,所以这对您的应用来说应该不是什么大问题。
mapView.setLayerType(View.LAYER_TYPE_SOFTWARE, null)
可以解决。
这不是我的解决方案,here