2017-02-07 27 views
0

У меня есть некоторая проблема в API 22, она работает хорошо, но на API 23 Я не вижу карту, я могу видеть только маркер, который я положил. В старой версии Android он работает.Java android Open Street карта не отображает карту

В журнале я есть:

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); 
    } 
} 
+0

В следующий раз, пожалуйста, упомянуть библиотеку вы используете, в этом случае 'osmdroid'. Я добавил его к вашим тегам. – scai

+0

и какая версия osmdroid. – spy

+0

@spy: 'osmdroid-android', версия: '4.2' –

ответ

1

добавить чек WRITE_EXTERNAL_STORAGE, когда я согласен, что это работает хорошо

1

Вы, вероятно, нужно запросить разрешения во время выполнения от пользователя если целевой API равен 23 или выше. Смотрите пример osmdroid приложения для примера делать так что здесь

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

или readthe андроида руководства здесь, на этом здесь https://developer.android.com/training/permissions/requesting.html