OSMDroid - 在Android API 28上缩小时移动的默认标记

问题描述 投票:1回答:1

我最近开始使用OSMDroid,但我很难在Android API 28上的特定Geopoint上获得默认标记。我按照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个回答
1
投票

我阅读了一些关于OSMDroid的文档,看起来硬件加速并不总是稳定的。我试图停用它并且它有效。

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

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

编辑:我已经与OSMDroid进一步合作,当我为我的标记使用自定义图标时不会发生此问题,因此它不应该是您的应用程序的一个大问题。

© www.soinside.com 2019 - 2024. All rights reserved.