Кэширование временно части карты (MapView) - PullRequest
1 голос
/ 20 апреля 2011

Я разрабатываю приложение с помощью MapView и GPS. Моя проблема в том, что пользователь может отключиться во время использования моего приложения, поэтому он будет ходить по полностью серой карте. Я бы хотел временно кэшировать карту, чтобы увидеть ее позже. Я знаю, что кэширование карты не разрешено API-интерфейсом Google Maps, но я хочу быть уверенным в том, что временное кэширование (и удаление его, когда приложение закрыто) также запрещено.

Я слышал об openstreetmaps / osmdroid, но я хотел бы подтвердить, что я ДОЛЖЕН использовать его перед удалением половины моего кода.

Ответы [ 3 ]

2 голосов
/ 27 апреля 2011

Поскольку мне нужен satelliteView, я наконец-то использовал метод, который можно улучшить.

Я запускаю поток, который просит контроллер перейти в местоположение рядом с пользователем.Он загружен и кэш управляется MapView:

int latitudeSpan = mapView.getLatitudeSpan();
        int longitudeSpan = mapView.getLongitudeSpan();
        for(int i=-MEMORIZED_MAP_SIZE;i<=MEMORIZED_MAP_SIZE;i++)
        {
            for(int j=-MEMORIZED_MAP_SIZE;j<=MEMORIZED_MAP_SIZE;j++)
            {
                synchronized (this) 
                {
                    if(i==j&&j==0) j++;
                    Message msg = new Message();
                    msg.arg1=latitude+latitudeSpan*i;
                    msg.arg2=longitude+longitudeSpan*j;
                    msg.setTarget(MainActivity.handler);
                    msg.sendToTarget();
                    try
                    {
                    wait(5000);
                    }
                    catch(Exception e){}
                }
            }
        }

Теперь мне просто нужно найти другой способ, кроме "wait (5000)", чтобы узнать, что часть карты, на которую я смотрюскачал.Я изменю это сообщение, если найду его.

2 голосов
/ 20 апреля 2011

Я знаю, что кэширование карты не разрешено API карт Google, но я хочу быть уверенным, что ВРЕМЕННОЕ кэширование (и удаление его, когда приложение закрыто) также запрещено.

Это невозможно сделать с помощью дополнения Google Maps для Android.

0 голосов
/ 29 марта 2013

У вас есть целый пример этого?

    int latitudeSpan = mapView.getLatitudeSpan();
    int longitudeSpan = mapView.getLongitudeSpan();
    for(int i=-MEMORIZED_MAP_SIZE;i<=MEMORIZED_MAP_SIZE;i++)
    {
        for(int j=-MEMORIZED_MAP_SIZE;j<=MEMORIZED_MAP_SIZE;j++)
        {
            synchronized (this) 
            {
                if(i==j&&j==0) j++;
                Message msg = new Message();
                msg.arg1=latitude+latitudeSpan*i;
                msg.arg2=longitude+longitudeSpan*j;
                msg.setTarget(MainActivity.handler);
                msg.sendToTarget();
                try
                {
                wait(5000);
                }
                catch(Exception e){}
            }
        }
    }

Мне удалось решить это частично, используя 2 фрагмента MapView, один из которых невидим. Затем цикл перемещал камеру, чтобы создать кэш для другого MapView

...