バージョン4.0.0よりMapboxはability to download offline regionsをAndroid SDKに導入しました。私は、次のように、この機能を利用するためにしようとしている:マップボックスのオフライン領域 - 保存されたマップ領域を表示できません
- は、私はオンラインだとき、
- は数日
- 、アプリを閉じて、オフライン領域としてマップの可視部分をダウンロード後でネットワーク接続なしで、その地域のどこかを指し示す地図を使ってアプリを開き、地図を利用できるようにします。
しかし、それはそのようには動作しません。私はオフラインでアプリを実行すると、それはハングアップし、地図があるべきである灰色の表面だけです。ログは、マップボックスがマップタイルの要求を発行しようとしていることを示しています(マップはオフラインで使用可能であるため、必要はありません)。
地図のonMapReadyCallbackが呼び出されないことが判明し、Mapboxにユーザーを追跡する必要があることがマップの保存領域に表示されます。だから、そこに悪循環があるようです:地図が準備ができていないと私は保存された領域に行くことができない、それはオフラインなので、現在表示されているすべてのタイルをロードするまで地図は準備ができていません...
誰でも助けてもらえますか?参考のため
、ここで私は地域をダウンロードする方法は次のとおりです。
private void downloadWithinBounds() {
mapView.getMapAsync(new OnMapReadyCallback() {
@Override
public void onMapReady(MapboxMap mapboxMap) {
Projection projection = mapboxMap.getProjection();
LatLng topLeft = projection.fromScreenLocation(new PointF(0, 0));
LatLng bottomRight = projection.fromScreenLocation(
new PointF(mapView.getWidth(), mapView.getHeight()));
manager.createOfflineRegion(new OfflineTilePyramidRegionDefinition(
Style.MAPBOX_STREETS,
new LatLngBounds.Builder()
.include(topLeft)
.include(bottomRight)
.build(),
mapboxMap.getCameraPosition().zoom,
mapboxMap.getMaxZoom(),
1.0f
), new byte[0], 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) {
if (status.isComplete()) {
Toast.makeText(MainActivity.this, "Done saving map.", Toast.LENGTH_SHORT).show();
}
}
// ...
});
}
// ...
});
}
});
}
、ここでは、私がのonCreateで正しい場所(にマップを移動しようとする方法です):
mapView.getMapAsync(new OnMapReadyCallback() {
@Override
public void onMapReady(final MapboxMap mapboxMap) {
LocationManager locationManager = (LocationManager) getSystemService(LOCATION_SERVICE);
Location last = locationManager.getLastKnownLocation(LocationManager.GPS_PROVIDER);
mapboxMap.setCameraPosition(new CameraPosition.Builder()
.zoom(INITIAL_ZOOM)
.target(last != null ? new LatLng(last.getLatitude(), last.getLongitude()) : null)
.build()
);
mapboxMap.getTrackingSettings().setMyLocationTrackingMode(MyLocationTracking.TRACKING_FOLLOW);
mapboxMap.setMyLocationEnabled(true);
mapboxMap.setStyle(Style.MAPBOX_STREETS);
// ...
}
});
onMapReady()は呼び出されません。
編集:ここはthe full source code of my activityです。
あなたの答えに感謝します。 '4.0.1-SNAPSHOT'については、私はちょうどチェックしたし、それは助けにならない - 地図はこれまでと同じようにぶら下がっている。すぐにこれを修正するためにあなたのために私の指を横切っておくでしょう。 :) – pstobiecki
'4.0.0'と' 4.0.1'を使って、コードスニペットを使って同じエラーを生成することができませんでした。もしあなたがもしあれば追加のコードであなたの質問を編集することは可能でしょうか?あなたの問題が解決しない場合は、[mapbox-gl-native repo](https://github.com/mapbox/mapbox-gl-native/issues)で問題を開くこともできます目。 – cammace
質問にアクティビティの完全な情報源を追加しました。私が持っている問題を再現するのに役立ちます。 – pstobiecki