Android ускоряет загрузку MapView - PullRequest
2 голосов
/ 02 января 2012

Привет, мое приложение иногда используется в сельской местности, где нет сети 3G, поэтому в первый раз при просмотре карты это происходит очень медленно.

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

Я видел, что есть метод mapView.preLoad (), но он работает только с объектом mapView. Как я могу сделать то же самое из службы? Я думал сделать так:

MapView mv=new MapView(this, getResources().getString(R.string.MAP_API_KEY));

mv.preLoad();

проблема в том, что если контекст не является MapActivity, это вызовет исключение.

Вот поток приложения:

пользователь запускает приложение

основное действие получает данные о местоположении и статистику загрузки данных для карты

пользователь открывает карту активности

Активность карты запускается быстрее, поскольку загруженные данные уже находятся в кэше

есть идеи, что я могу сделать? Заранее спасибо за совет

1 Ответ

4 голосов
/ 20 марта 2014

Я использовал Android Mapview внутри фрагмента, но когда я загружал карту с координатами, она не загружалась вообще. Так что я нашел решение для этого.

Первая инициализация карты в методе onCreate.

View v = inflater.inflate(R.layout.fragment_layout, null);
map = (MapView) v.findViewById(R.id.map);
map.onCreate(this.savedInstance);

затем установите вид карты следующим образом.

private void setUpMap() {
    try {
        MapsInitializer.initialize(mContext);
    } catch (GooglePlayServicesNotAvailableException e) {
        e.printStackTrace();
    }

    mMap.addMarker(new MarkerOptions().position(new LatLng(latitude, longitude)).title("Place Lable").icon(BitmapDescriptorFactory.fromResource(R.drawable.icon_drawable)));


    mMap.moveCamera(CameraUpdateFactory.newLatLngZoom(new LatLng(latitude, longitude), 15));


    map.onResume();
}

этот ключевой пункт в этом коде должен вызывать map.onResume(); после установки Map

...