【问题标题】:OSMDroid - Default marker moving when zooming out on Android API 28OSMDroid - 在 Android API 28 上缩小时默认标记移动
【发布时间】:2021-06-16 01:16:10
【问题描述】:

我最近开始使用 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 上工作?

【问题讨论】:

    标签: android osmdroid


    【解决方案1】:

    我阅读了一些关于 OSMDroid 的文档,似乎硬件加速并不总是稳定的。我尝试停用它,它起作用了。

    因此,如果您的标记似乎不在正确的位置并且在您放大或缩小时移动,只需在 Android Manifest 中停用此活动的硬件加速:

    <activity
        android:name=".MapActivity"
        android:hardwareAccelerated="false"/>
    

    编辑:我已经与 OSMDroid 进行了进一步的合作,当我使用自定义图标作为我的标记时,不会出现这个问题,所以这对你的应用来说应该不是一个大问题。

    【讨论】:

    • 真的很惊喜。您能否将其作为问题发布在 osmdroid GitHub 项目中,包括多边形的代码部分? (我假设多边形角正好在同一个位置?)
    • 当然,如果您认为在我的编辑后它仍然是一个重要问题,请告诉我。我检查了自定义图标的问题,似乎它只发生在默认图标上。多边形角与标记的位置完全相同。
    【解决方案2】:

    mapView.setLayerType(View.LAYER_TYPE_SOFTWARE, null) 可以解决的。

    这不是我的解决方案,拿了here

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-09-07
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多