Кэширование фрагментов карты для просмотра в автономном режиме

Создайте копию исполняемых файлов того же сервиса и вставьте его на том же пути существующего сервиса и затем удалите.

26
задан Community 23 May 2017 в 11:53
поделиться

3 ответа

Я видел, как это делается с помощью пользовательского слоя, размещенного над картой. Затем плитки загружаются из любого удобного вам места (IsolatedStorage, онлайн, где-нибудь еще?) В пользовательский слой.

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

2
ответ дан 28 November 2019 в 17:31
поделиться

Если вы можете хранить данные локально (встроить их в XAP), вы можете ссылаться на них через абсолютный URI. Крис Уолши говорит об этом здесь .

Так, например, когда у вас есть путь установки для приложения, вы можете ссылаться на ресурс следующим образом:

Uri toResource = new Uri("file:///Applications/Install/4FFA38B5-00AF-4760-A7EB-7C0C0BC1D31A/Install/EMBEDDED_RESOURCE", UriKind.Absolute);
0
ответ дан 28 November 2019 в 17:31
поделиться

Если ваше приложение работает на WP8, используйте встроенный элемент управления картами в Windows Phone 8 SDK, поскольку он уже поддерживает автономные карты из коробки. При нацеливании на WP7 можно заставить работать автономные карты, но это требует много работы. Я создал это для клиента несколько лет назад и считаю, что мне потребовалось чуть более 3000 строк кода. Напомним, что они хотели также иметь структуру для добавления плиток из различных источников, таких как загрузка поверх и области и загрузка архивированных файлов. То, как мне удалось заставить рендеринг работать, состояло из холста на карту, не устанавливая его положение. Это будет по умолчанию сделать его дочерним элементом карты, но оно не будет двигаться. Затем я сделал холст того же размера, что и карта, и использовал событие resize для изменения размера холста в случае изменения размера карты. Затем я использовал событие изменения вида, чтобы вызвать метод для рендеринга плиток. Когда это событие сработало, я сначала рассчитал все отображаемые плитки, используя код, найденный здесь: http://msdn.microsoft.com/en-us/library/bb259689.aspx

I затем вытаскивал плитки из изолированного хранилища и рисовал их на холсте. Для производительности я отслеживаю, какие плитки я добавил на холст, чтобы, если плитка все еще была в поле зрения, я просто изменил ее положение, а не перезагружал ее из изолированного хранилища. Я также удалил все изображения, которые больше не были видны. В целом это работает хорошо, но были некоторые незначительные проблемы, такие как отсутствие плавного перехода между уровнями масштабирования. Если вы действительно хотели, чтобы это работало, но требует гораздо больше математики. Кроме того, если вы увеличите область, где нет плиток, вы получите пустую карту. Вы можете создать собственный режим карты, чтобы запретить пользователю заходить в области, где у вас нет плиток.

0
ответ дан 28 November 2019 в 17:31
поделиться
Другие вопросы по тегам:

Похожие вопросы: