How using offline map in android

大憨熊 提交于 2019-12-11 07:11:26

问题


I want download a particular city in my app. How can do this? There is another problem, too: when I use SDK of Mapbox 4.1.1 I can't add the class BoundingBox.

I have a problem, a code that exists on their site to download the map is not based just once. I have to stop running the program, and when I re-run it the map does not load again. This is my code :

// Mapbox access token is configured here. This needs to be called either in your application
// object or in the same activity which contains the mapview.
MapboxAccountManager.start(this, getString(R.string.access_token));

// This contains the MapView in XML and needs to be called after the account manager
setContentView(R.layout.activity_offline_simple);

mapView = (MapView) findViewById(R.id.mapView);
mapView.onCreate(savedInstanceState);
mapView.getMapAsync(new OnMapReadyCallback() {
  @Override
  public void onMapReady(MapboxMap mapboxMap) {
    // Set up the OfflineManager
    offlineManager = OfflineManager.getInstance(SimpleOfflineMapActivity.this);

    // Create a bounding box for the offline region
    LatLngBounds latLngBounds = new LatLngBounds.Builder()
      .include(new LatLng(13.1,32.6)) // Northeast
      .include(new LatLng(13.6,32.9)) // Southwest
      .build();

    // Define the offline region
    OfflineTilePyramidRegionDefinition definition = new OfflineTilePyramidRegionDefinition(
      mapView.getStyleUrl(),
      latLngBounds,
      10,
      20,
      SimpleOfflineMapActivity.this.getResources().getDisplayMetrics().density);

    // Set the metadata
    byte[] metadata;
    try {
      JSONObject jsonObject = new JSONObject();
      jsonObject.put(JSON_FIELD_REGION_NAME, "Triopli Libya");
      String json = jsonObject.toString();
      metadata = json.getBytes(JSON_CHARSET);
    } catch (Exception exception) {
      Log.e(TAG, "Failed to encode metadata: " + exception.getMessage());
      metadata = null;
    }

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

          // Display the download progress bar
          progressBar = (ProgressBar) findViewById(R.id.progress_bar);
          startProgress();

          // Monitor the download progress using setObserver
          offlineRegion.setObserver(new OfflineRegion.OfflineRegionObserver() {
            @Override
            public void onStatusChanged(OfflineRegionStatus status) {

              // Calculate the download percentage and update the progress bar
              double percentage = status.getRequiredResourceCount() >= 0
                ? (100.0 * status.getCompletedResourceCount() / status.getRequiredResourceCount()) :
                0.0;

              if (status.isComplete()) {
                // Download complete
                endProgress("Region downloaded successfully.");
              } else if (status.isRequiredResourceCountPrecise()) {
                // Switch to determinate state
                setPercentage((int) Math.round(percentage));
              }
            }

            @Override
            public void onError(OfflineRegionError error) {
              // If an error occurs, print to logcat
              Log.e(TAG, "onError reason: " + error.getReason());
              Log.e(TAG, "onError message: " + error.getMessage());
            }

            @Override
            public void mapboxTileCountLimitExceeded(long limit) {
              // Notify if offline region exceeds maximum tile count
              Log.e(TAG, "Mapbox tile count limit exceeded: " + limit);
            }
          });
        }

        @Override
        public void onError(String error) {
          Log.e(TAG, "Error: " + error);
        }
      });
  }
});

}


回答1:


Your offline region specified is exceeding the 6000 tile count limit. You can read more about this on our help pages and use the tile calculator to either reduce the region size or change the zoom levels downloaded.



来源:https://stackoverflow.com/questions/40804868/how-using-offline-map-in-android

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!