В настоящее время я разрабатываю приложение для Android, которое имеет карту с использованием phonegap, cloudmade и листовки. Есть ли способ, каким-то образом кэшировать плитки карты на Android-телефоне? Загрузка фрагментов карты с сервера происходит каждый раз довольно медленно.Как сделать карточную плиту более эффективной с помощью листовки с помощью приложения для Android?
Как сделать карточную плиту более эффективной с помощью листовки с помощью приложения для Android?
ответ
Это только теоретические соображения, и я не знаю рабочих реализаций для листовки. Однако у меня есть проблема, но у меня нет времени для ее решения.
Web и PhoneGap хранилища:
loacalstorage
- синхронное, легко реализовать с помощью base64 URL, малого размера 2.5-5MB (вероятно PhoneGap Resolvelocalstorage
небольшого объема выпуска).indexed db
иweb sql
- асинхронный, размер 50 МБ (возможно, больше).- phonegap file storage - асинхронный.
Как реализовать:
Написать собственный слой, который будет работать с вашей памятью, вероятно, это будет трудно для асинхронного API.
Вы всегда можете хранить плитки в качестве URL-адреса данных с кодировкой base64. Вы можете преобразовать изображение по URL-адресу сервера в URL-адрес данных с помощью JS и холста.
Если вы можете использовать предварительную загрузку плит прежде всего для использования хранения файлов, потому что вы можете просто использовать ссылки на плитки в своей файловой системе.
Для asychronous API, вы всегда можете определить вашу плитку zoom
, latitude
и longitude
: вставить поддельные плитки с zoom_lat_lng
Ид и поддельными src
, проверить плитку на хранении этого идентификатора, если плитка найдена - загрузить его, иначе нагрузку от сервера с кэширование.
UPD: Смотрите мое решение кэширования с индексированной БД и веб-SQL, например: https://github.com/tbicr/OfflineMap/tree/master/leaflet_idb_sql_site и пример http://tbicr.github.com/OfflineMap/leaflet/index.html (теперь не быстро на андроид).
Есть куча ответов, которые могут вам помочь. Поиск ускорения телефонных звонков –