Как мы делали оффлайн-карты под windows phone — Александр...
TRANSCRIPT
![Page 1: Как мы делали оффлайн-карты под Windows Phone — Александр Волохин, 2ГИС](https://reader036.vdocuments.us/reader036/viewer/2022062308/55b876f5bb61eb074c8b4798/html5/thumbnails/1.jpg)
DevCon 2015developers productivity platform
![Page 2: Как мы делали оффлайн-карты под Windows Phone — Александр Волохин, 2ГИС](https://reader036.vdocuments.us/reader036/viewer/2022062308/55b876f5bb61eb074c8b4798/html5/thumbnails/2.jpg)
Александр Волохинразработчик на платформе Windows Phone, 2GIS
Как мы делали офлайн-карты под Windows Phone
![Page 3: Как мы делали оффлайн-карты под Windows Phone — Александр Волохин, 2ГИС](https://reader036.vdocuments.us/reader036/viewer/2022062308/55b876f5bb61eb074c8b4798/html5/thumbnails/3.jpg)
Новый 2GIS для Windows Phone
• Детальная карта • Справочник организаций• Поиск проезда на авто и
общественном транспорте• Более 250 городов России• Офлайн
![Page 4: Как мы делали оффлайн-карты под Windows Phone — Александр Волохин, 2ГИС](https://reader036.vdocuments.us/reader036/viewer/2022062308/55b876f5bb61eb074c8b4798/html5/thumbnails/4.jpg)
Зачем нужна новая версияПро архитектуру нового 2GIS Про 3D-картуПро MVVM framework Доставка данных для работы офлайнПро верстку XAML и дизайнеровКак мы на Universal App переходили
Содержание
![Page 5: Как мы делали оффлайн-карты под Windows Phone — Александр Волохин, 2ГИС](https://reader036.vdocuments.us/reader036/viewer/2022062308/55b876f5bb61eb074c8b4798/html5/thumbnails/5.jpg)
Старый 2GIS для Windows Phone
• Детальная карта • Справочник организаций• Поиск проезда на
общественном транспорте• Более 250 городов России• Онлайн
![Page 6: Как мы делали оффлайн-карты под Windows Phone — Александр Волохин, 2ГИС](https://reader036.vdocuments.us/reader036/viewer/2022062308/55b876f5bb61eb074c8b4798/html5/thumbnails/6.jpg)
Зачем нужен новый 2GIS под WP
• Офлайн• Быстрое появление новых фич• Безболезненная доставка
данных
«отстойная онлайновая никчемность» © Oleg
![Page 7: Как мы делали оффлайн-карты под Windows Phone — Александр Волохин, 2ГИС](https://reader036.vdocuments.us/reader036/viewer/2022062308/55b876f5bb61eb074c8b4798/html5/thumbnails/7.jpg)
Архитектура нового 2GIS
CORE
Windows Runtime Component
UI
Solution ‘v4uniapp’ (450 projects)
![Page 8: Как мы делали оффлайн-карты под Windows Phone — Александр Волохин, 2ГИС](https://reader036.vdocuments.us/reader036/viewer/2022062308/55b876f5bb61eb074c8b4798/html5/thumbnails/8.jpg)
3D-карта
• Работает офлайн• Разрабатывается отдельной
командой• Написана на OpenGL• Используем Angle
![Page 9: Как мы делали оффлайн-карты под Windows Phone — Александр Волохин, 2ГИС](https://reader036.vdocuments.us/reader036/viewer/2022062308/55b876f5bb61eb074c8b4798/html5/thumbnails/9.jpg)
MVVM framework Caliburn.Micro
• Поддержка навигации посредством NavigationService• Методы Activate() и Deactivate()• Поддержка сохранения состояния• Встроенная поддержка IoC контейнера• Поддержка Pivot, декомпозиция для PivotItems• Открытый исходный код и низкий порог вхождения
![Page 10: Как мы делали оффлайн-карты под Windows Phone — Александр Волохин, 2ГИС](https://reader036.vdocuments.us/reader036/viewer/2022062308/55b876f5bb61eb074c8b4798/html5/thumbnails/10.jpg)
Наши доработки в Caliburn.Micro
• Бинарная сериализация с помощью SharpSerializer • NavigationService для двухуровневой навигации
![Page 11: Как мы делали оффлайн-карты под Windows Phone — Александр Волохин, 2ГИС](https://reader036.vdocuments.us/reader036/viewer/2022062308/55b876f5bb61eb074c8b4798/html5/thumbnails/11.jpg)
Двухуровневая навигация
![Page 12: Как мы делали оффлайн-карты под Windows Phone — Александр Волохин, 2ГИС](https://reader036.vdocuments.us/reader036/viewer/2022062308/55b876f5bb61eb074c8b4798/html5/thumbnails/12.jpg)
Доставляем данные
{
"data": "Hello, offline!"
}
![Page 13: Как мы делали оффлайн-карты под Windows Phone — Александр Волохин, 2ГИС](https://reader036.vdocuments.us/reader036/viewer/2022062308/55b876f5bb61eb074c8b4798/html5/thumbnails/13.jpg)
Доставляем шаблоны
<DataTemplate x:Key="Key">
<TextBlock Text="{Binding [data]}"/>
</DataTemplate>
// Используем XamlReader.Load()
![Page 14: Как мы делали оффлайн-карты под Windows Phone — Александр Волохин, 2ГИС](https://reader036.vdocuments.us/reader036/viewer/2022062308/55b876f5bb61eb074c8b4798/html5/thumbnails/14.jpg)
Универсальный DataContextpublic class DynamicDataContext
{
public object this[string key]
{
get
{
return dictionary[key];
}
}
private Dictionary<string, object> dictionary;
}
![Page 15: Как мы делали оффлайн-карты под Windows Phone — Александр Волохин, 2ГИС](https://reader036.vdocuments.us/reader036/viewer/2022062308/55b876f5bb61eb074c8b4798/html5/thumbnails/15.jpg)
Доставили
1. Парсим JSON -> ViewModel2. Парсим XAML -> View3. DataBinding через
индексатор4. Profit!
![Page 16: Как мы делали оффлайн-карты под Windows Phone — Александр Волохин, 2ГИС](https://reader036.vdocuments.us/reader036/viewer/2022062308/55b876f5bb61eb074c8b4798/html5/thumbnails/16.jpg)
Верстка. Дизайнеры. Что делать
?
![Page 17: Как мы делали оффлайн-карты под Windows Phone — Александр Волохин, 2ГИС](https://reader036.vdocuments.us/reader036/viewer/2022062308/55b876f5bb61eb074c8b4798/html5/thumbnails/17.jpg)
Microsoft Expression Blend 2013
![Page 18: Как мы делали оффлайн-карты под Windows Phone — Александр Волохин, 2ГИС](https://reader036.vdocuments.us/reader036/viewer/2022062308/55b876f5bb61eb074c8b4798/html5/thumbnails/18.jpg)
Blend. Хьюстон, у нас проблемы
![Page 19: Как мы делали оффлайн-карты под Windows Phone — Александр Волохин, 2ГИС](https://reader036.vdocuments.us/reader036/viewer/2022062308/55b876f5bb61eb074c8b4798/html5/thumbnails/19.jpg)
Blend. Просто ничего не отображает
![Page 20: Как мы делали оффлайн-карты под Windows Phone — Александр Волохин, 2ГИС](https://reader036.vdocuments.us/reader036/viewer/2022062308/55b876f5bb61eb074c8b4798/html5/thumbnails/20.jpg)
// Готовим Blend:// дебажим ошибки в DesignTime,// настраиваем d:DataContext — // profit!
![Page 21: Как мы делали оффлайн-карты под Windows Phone — Александр Волохин, 2ГИС](https://reader036.vdocuments.us/reader036/viewer/2022062308/55b876f5bb61eb074c8b4798/html5/thumbnails/21.jpg)
// Очень нужна сортировка
![Page 22: Как мы делали оффлайн-карты под Windows Phone — Александр Волохин, 2ГИС](https://reader036.vdocuments.us/reader036/viewer/2022062308/55b876f5bb61eb074c8b4798/html5/thumbnails/22.jpg)
// Верстаем по сетке.// По такой же, которую// использует дизайнер.
![Page 23: Как мы делали оффлайн-карты под Windows Phone — Александр Волохин, 2ГИС](https://reader036.vdocuments.us/reader036/viewer/2022062308/55b876f5bb61eb074c8b4798/html5/thumbnails/23.jpg)
Переходим на Universal App
• 4 недели, 3 разработчика, 150 проектов• Отказываемся от сторонних библиотек элементов
управления
![Page 24: Как мы делали оффлайн-карты под Windows Phone — Александр Волохин, 2ГИС](https://reader036.vdocuments.us/reader036/viewer/2022062308/55b876f5bb61eb074c8b4798/html5/thumbnails/24.jpg)
ScaleFactor изменился
было
стало
![Page 25: Как мы делали оффлайн-карты под Windows Phone — Александр Волохин, 2ГИС](https://reader036.vdocuments.us/reader036/viewer/2022062308/55b876f5bb61eb074c8b4798/html5/thumbnails/25.jpg)
Спасибо! • Офлайн• Ядро на C++, UI на C#/XAML• 3D-карта через Angle• Caliburn.Micro• DataTemplates отдельно от
приложения• Верстаем в Blend• Universal App
![Page 26: Как мы делали оффлайн-карты под Windows Phone — Александр Волохин, 2ГИС](https://reader036.vdocuments.us/reader036/viewer/2022062308/55b876f5bb61eb074c8b4798/html5/thumbnails/26.jpg)
Новый 2GIS. Качаем!
«Идеально. Спасибо, я так ждал» © Давид
![Page 27: Как мы делали оффлайн-карты под Windows Phone — Александр Волохин, 2ГИС](https://reader036.vdocuments.us/reader036/viewer/2022062308/55b876f5bb61eb074c8b4798/html5/thumbnails/27.jpg)
©2015 Microsoft Corporation. All rights reserved. Microsoft, Windows, Office, Azure, System Center, Dynamics and other product names are or may be registered trademarks and/or trademarks in the U.S. and/or other countries. The information herein is for informational purposes only and represents the current view of Microsoft Corporation as of the date of this presentation. Because Microsoft must respond to changing market conditions, it should not be interpreted to be a commitment on the part of Microsoft, and Microsoft cannot guarantee the accuracy of any information provided after the date of this presentation. MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION.