MapBox: как захватить растровое изображение карты с полилиниями - PullRequest
1 голос
/ 18 июня 2020

Я использовал MapSnapshotter для захвата растрового изображения карты. Однако я мог получить только изображение базовой карты, но не нарисованные над ней полилинии, которые являются текущим маршрутом пользователя и имеют решающее значение для моего проекта. Есть ли способ сделать снимок карты вместе с полилиниями?

Я использовал LineManager для рисования полилиний.

Код ниже:

startSnapShot(mapboxMap.getProjection().getVisibleRegion().latLngBounds,
              mapView.getMeasuredHeight(),
              mapView.getMeasuredWidth());


--------------

private void startSnapShot(LatLngBounds latLngBounds, int height, int width) {
        mapboxMap.getStyle(style -> {
            if (mapSnapshotter == null) {
                // Initialize snapshotter with map dimensions and given bounds
                MapSnapshotter.Options options =
                        new MapSnapshotter.Options(width, height)
                                .withCameraPosition(mapboxMap.getCameraPosition())
                                .withStyle(style.getUri())
                                .withRegion(latLngBounds);

                mapSnapshotter = new MapSnapshotter(RunTracker.this, options);
            } else {
                // Reuse pre-existing MapSnapshotter instance
                mapSnapshotter.setSize(width, height);
                mapSnapshotter.setRegion(latLngBounds);
            }
            mapSnapshotter.start(snapshot -> passBitmap(snapshot.getBitmap()));
        });
    }

Ответы [ 2 ]

0 голосов
/ 22 июня 2020

вместо MapSnappShotter используйте mapboxmap.snapshot, как показано ниже.
он возвращает вам растровое изображение со всей линией и маркером на карте

 mMap.snapshot(new MapBoxMap.SnapshotReadyCallback() {
            @Override
            public void onSnapshotReady(@NonNull Bitmap bitmap) {
                
            }
        });
0 голосов
/ 19 июня 2020

Mapbox Android MapSnapshotter в настоящее время не поддерживает захват стилей выполнения, добавленных к карте. Изображение, полученное из snapshot.getBitmap(), не включает никаких аннотаций, добавленных на стороне клиента, например, с помощью LineManager.

Вместо этого вы можете добавить эти полилинии непосредственно в стиль карты с помощью Mapbox Studio . В качестве альтернативы вы можете использовать предложенный код в этом сообщении о переполнении стека , который не указан c для Mapbox. Если вы передадите Layout, содержащий ваш объект карты Mapbox, методу takeScreenShot, вы сможете сгенерировать Bitmap, содержащий вашу карту и аннотации, добавленные к указанной карте с помощью LineManager.

...