Android - Google Maps API Heatmap с фиксированным радиусом в метрах - PullRequest
0 голосов
/ 06 июля 2018

Наложение Heatmap для Android Google Maps API отображает радиус в пикселях, что означает, что при увеличении и уменьшении радиус становится все больше и меньше.

Мне нужна тепловая карта с фиксированным радиусом (например, в метрах вместо пикселей), которая не масштабируется при увеличении и уменьшении масштаба.

Есть ли возможность сделать это?

Ответы [ 2 ]

0 голосов
/ 06 июля 2018

На мой взгляд, вы можете использовать метод setRadius () для изменения радиуса расположения тепловых карт в ответ на изменение масштаба. Примерно так:

    int DEFAULT_ZOOM_LEVEL = 10;
    int ZOOM_STEP_FOR_RADIUS = 2;

    mProvider = new HeatmapTileProvider.Builder()
            .data(mList)
            .setRadius(DEFAULT_ZOOM_LEVEL)
            .build();
    mOverlay = mMap.addTileOverlay(new TileOverlayOptions().tileProvider(mProvider));

    mMap.setOnCameraIdleListener(new GoogleMap.OnCameraIdleListener({
        @Override
        void onCameraIdle() {
            float newZoom = mMap.getCameraPosition().zoom;

            mProvider.setRadius(DEFAULT_ZOOM_LEVEL + newZoom * ZOOM_STEP_FOR_RADIUS)
            mOverlay.clearTileCache();
        }
    });
0 голосов
/ 06 июля 2018

В googlemap api получите данные масштаба. В пользовательском интерфейсе у вас есть легенда, которая утверждает масштаб карты. Примерно так - (проверьте в Google Maps внизу справа, я говорю о 2000Ft вещь ниже)

enter image description here

Вы знаете, см длину экрана телефона, вы знаете пиксели по всей ширине, поэтому

см (экран телефона) -> соотношение см / пиксель -> радиус пикселя к радиусу см.

Вы можете сделать вывод, используя некоторые математические выражения, которые я полагаю.

...