Как увеличить карту на основе текущей скорости, полученной с помощью API-интерфейса - PullRequest
0 голосов
/ 11 февраля 2019

Я использую API-интерфейс для определения текущего местоположения пользователя и вычисления скорости, как показано ниже.

    LocationCallback mLocationCallback = new LocationCallback(){
    private Location lastLocation = null;
    private double calculatedSpeed = 0;
    @Override
    public void onLocationResult(LocationResult locationResult) {
        Location location = locationResult.getLastLocation();
        if (lastLocation != null) {
            double elapsedTime = (location.getTime() - lastLocation.getTime()) / 1_000; // Convert milliseconds to seconds
            calculatedSpeed = lastLocation.distanceTo(location) / elapsedTime;

        }
        this.lastLocation = location;
        double speed = location.hasSpeed() ? location.getSpeed() : calculatedSpeed;
        }
    };

Используя рассчитанную скорость, я хочу увеличить масштаб при низкой скорости и уменьшить при высокой скорости, как это происходит в приложении Google Maps.Это приложение для слежения за 4 колесами.

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

Решение :

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

    float zoom;
    if(speed < 5)
        zoom = 18;
    else if(speed < 10)
        zoom = (float) 17.5;
    else if(speed < 15)
        zoom = 17;
    else if(speed < 20)
        zoom = (float) 16.5;
    else if(speed < 25)
        zoom = 16;
    else
        zoom = 15;

    CameraPosition cameraPosition = new CameraPosition.Builder()
            .target(myLatLng)
            .zoom(zoom)
            .tilt(0)
            .build();
    mMap.animateCamera(CameraUpdateFactory.newCameraPosition(cameraPosition));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...