Java android Open Street地图不显示地图

时间:2017-02-07 07:48:42

标签: java android openstreetmap osmdroid

我在API 22上遇到了一些问题,但是在API 23上我没有看到地图,我只能看到一个标记。在旧版本的android上它可以工作。

在日志中我有:

Thread-27428(ApacheHTTPLog):isSBSettingEnabled false
Thread-27428(ApacheHTTPLog):isShipBuild true
Thread-27428(ApacheHTTPLog):getDebugLevel 0x4f4c
Thread-27428(ApacheHTTPLog):Smart Bonding Setting is false
Thread-27428(ApacheHTTPLog):SmartBonding Setting is false, SHIP_BUILD is true, log to file is false, DBG is false, DEBUG_LEVEL (1-LOW, 2-MID, 3-HIGH) is 1

AndroidOpenStreetMapViewActivity.java

public class AndroidOpenStreetMapViewActivity extends Activity {

    private MapView myOpenMapView;
    private MapController myMapController;

    ArrayList<OverlayItem> anotherOverlayItemArray;

    /**
     * Called when the activity is first created.
     */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        myOpenMapView = (MapView) findViewById(R.id.openmapview);
        myOpenMapView.setBuiltInZoomControls(true);
        myMapController = (MapController) myOpenMapView.getController();
        myMapController.setZoom(2);
            //--- Create Another Overlay for multi marker
        anotherOverlayItemArray = new ArrayList<>();
        anotherOverlayItemArray.add(new OverlayItem(
                "0, 0", "0, 0", new GeoPoint(0, 0)));
        anotherOverlayItemArray.add(new OverlayItem(
                "US", "US", new GeoPoint(38.883333, -77.016667)));
        anotherOverlayItemArray.add(new OverlayItem(
                "China", "China", new GeoPoint(39.916667, 116.383333)));
        anotherOverlayItemArray.add(new OverlayItem(
                "United Kingdom", "United Kingdom", new GeoPoint(51.5, -0.116667)));
        anotherOverlayItemArray.add(new OverlayItem(
                "Germany", "Germany", new GeoPoint(52.516667, 13.383333)));
        anotherOverlayItemArray.add(new OverlayItem(
                "Korea", "Korea", new GeoPoint(38.316667, 127.233333)));
        anotherOverlayItemArray.add(new OverlayItem(
                "India", "India", new GeoPoint(28.613333, 77.208333)));
        anotherOverlayItemArray.add(new OverlayItem(
                "Russia", "Russia", new GeoPoint(55.75, 37.616667)));
        anotherOverlayItemArray.add(new OverlayItem(
                "France", "France", new GeoPoint(48.856667, 2.350833)));
        anotherOverlayItemArray.add(new OverlayItem(
                "Canada", "Canada", new GeoPoint(45.4, -75.666667)));

        ItemizedIconOverlay<OverlayItem> anotherItemizedIconOverlay
                = new ItemizedIconOverlay<OverlayItem>(
                this, anotherOverlayItemArray, null);
        myOpenMapView.getOverlays().add(anotherItemizedIconOverlay);
        //---

        //Add Scale Bar
        ScaleBarOverlay myScaleBarOverlay = new ScaleBarOverlay(this);
        myOpenMapView.getOverlays().add(myScaleBarOverlay);
    }
}

2 个答案:

答案 0 :(得分:1)

当我同意它运作良好时,我会添加检查WRITE_EXTERNAL_STORAGE

答案 1 :(得分:1)

如果目标API为23或更高,您可能需要从用户请求运行时权限。请参阅示例osmdroid应用程序以获取此处的示例

https://github.com/osmdroid/osmdroid/blob/master/OpenStreetMapViewer/src/main/java/org/osmdroid/intro/PermissionsFragment.java

或者在这里阅读android指南 https://developer.android.com/training/permissions/requesting.html