2017-10-04 6 views
0

MapBox SDKのOfflineManagerでマップをダウンロードしようとしています。私のスタイルはアセットフォルダにあり、オンラインで地図を表示するときにうまく機能します。しかし、同じスタイルのマップをダウンロードしようとすると、そのエラーが発生します。私のスタイルのJSONファイルがassetsフォルダに置かれているのはおそらく問題でしょうか?別の場所に置くべきでしょうか? W/HTTPRequestの:永続的なエラーが原因で失敗した要求:「はjava.lang.String型okhttp3.HttpUrl.hostを仮想メソッドを呼び出そうと(ここで MapBox:永続的なエラーのため要求が失敗しました:nullオブジェクト参照で仮想メソッド 'java.lang.String okhttp3.HttpUrl.host()'を呼び出そうとしました

mapView.onCreate(savedInstanceState); 
    mapView.setStyleUrl("asset://kompassStyle"); 

    mapView.getMapAsync(mapboxMap -> { 
     startDownload(mapboxMap); 
    }); 

private void startDownload(MapboxMap mapboxMap) { 

    byte[] metadata; 
    try { 
     JSONObject jsonObject = new JSONObject(); 
     jsonObject.put("region", "Some region"); 
     String json = jsonObject.toString(); 
     metadata = json.getBytes(JSON_CHARSET); 
    } catch (Exception exception) { 
     Log.e("Offline", "Failed to encode metadata: " + exception.getMessage()); 
     metadata = null; 
    } 

    if (metadata == null) 
     return; 


    Timber.e("Style " + mapboxMap.getStyleUrl()); 

    OfflineManager offlineManager = OfflineManager.getInstance(getContext()); 
    LatLngBounds latLngBounds = new LatLngBounds.Builder() 
      .include(new LatLng(45.8150, 15.9819)) // Northeast 
      .include(new LatLng(41.9028, 12.4964)) // Southwest 
      .build(); 

    OfflineTilePyramidRegionDefinition definition = new OfflineTilePyramidRegionDefinition(
      mapboxMap.getStyleUrl(), 
      latLngBounds, 
      5, 
      10, 
      getContext().getResources().getDisplayMetrics().density); 


    offlineManager.createOfflineRegion(definition, metadata, new OfflineManager.CreateOfflineRegionCallback() { 
     @Override 
     public void onCreate(OfflineRegion offlineRegion) { 
      offlineRegion.setDownloadState(OfflineRegion.STATE_ACTIVE); 

      offlineRegion.setObserver(new OfflineRegion.OfflineRegionObserver() { 
       @Override 
       public void onStatusChanged(OfflineRegionStatus status) { 
        double percentage = status.getRequiredResourceCount() >= 0 
          ? (100.0 * status.getCompletedResourceCount()/status.getRequiredResourceCount()) : 
          0.0; 

        if (status.isComplete()) { 
         // Download complete 
         Log.d("offline", "Region downloaded successfully."); 
        } else if (status.isRequiredResourceCountPrecise()) { 
         Log.d("offline", " " + percentage); 
        } 
       } 

       @Override 
       public void onError(OfflineRegionError error) { 
        Timber.e(error.getMessage()); 
        Timber.e(error.getReason()); 
       } 

       @Override 
       public void mapboxTileCountLimitExceeded(long limit) { 
        Timber.e("LimitOffline " + limit); 
       } 
      }); 

     } 

     @Override 
     public void onError(String error) { 
      Timber.e(error); 
     } 
    }); 
} 

は私のkompassStyle

{ 
     "version": 8, 
     "name": "Raster Tiles", 
     "sources": { 
     "yourTileLayer": { 
      "type": "raster", 
      "tiles": [ 
     "http://xxxxxx/{z}/{x}/{y}.jpg?key=something", 
     "http://yyyyyy/{z}/{x}/{y}.jpg?key=something", 
     "http://ssssss/{z}/{x}/{y}.jpg?key=something", 
     "http://nnnnnn/{z}/{x}/{y}.jpg?key=something" 
     ], 
     "tileSize": 256 
    } 
    }, 
    "layers": [ 
    { 
     "id": "background", 
     "type": "background", 
     "paint": { 
     "background-color": "#41afa5" 
     } 
    }, 
    { 
    "id": "yourTileLayer", 
    "type": "raster", 
    "source": "yourTileLayer" 
    }] 
} 

エラーログです) 'nullのオブジェクト参照で

答えて

関連する問題