Как мы делали оффлайн-карты под Windows Phone — Александр...

27
DevCon 2015 developers productivity platform

Transcript of Как мы делали оффлайн-карты под Windows Phone — Александр...

Page 1: Как мы делали оффлайн-карты под Windows Phone — Александр Волохин, 2ГИС

DevCon 2015developers productivity platform

Page 2: Как мы делали оффлайн-карты под Windows Phone — Александр Волохин, 2ГИС

Александр Волохинразработчик на платформе Windows Phone, 2GIS

Как мы делали офлайн-карты под Windows Phone

Page 3: Как мы делали оффлайн-карты под Windows Phone — Александр Волохин, 2ГИС

Новый 2GIS для Windows Phone

• Детальная карта • Справочник организаций• Поиск проезда на авто и

общественном транспорте• Более 250 городов России• Офлайн

Page 4: Как мы делали оффлайн-карты под Windows Phone — Александр Волохин, 2ГИС

Зачем нужна новая версияПро архитектуру нового 2GIS Про 3D-картуПро MVVM framework Доставка данных для работы офлайнПро верстку XAML и дизайнеровКак мы на Universal App переходили

Содержание

Page 5: Как мы делали оффлайн-карты под Windows Phone — Александр Волохин, 2ГИС

Старый 2GIS для Windows Phone

• Детальная карта • Справочник организаций• Поиск проезда на

общественном транспорте• Более 250 городов России• Онлайн

Page 6: Как мы делали оффлайн-карты под Windows Phone — Александр Волохин, 2ГИС

Зачем нужен новый 2GIS под WP

• Офлайн• Быстрое появление новых фич• Безболезненная доставка

данных

«отстойная онлайновая никчемность» © Oleg

Page 7: Как мы делали оффлайн-карты под Windows Phone — Александр Волохин, 2ГИС

Архитектура нового 2GIS

CORE

Windows Runtime Component

UI

Solution ‘v4uniapp’ (450 projects)

Page 8: Как мы делали оффлайн-карты под Windows Phone — Александр Волохин, 2ГИС

3D-карта

• Работает офлайн• Разрабатывается отдельной

командой• Написана на OpenGL• Используем Angle

Page 9: Как мы делали оффлайн-карты под Windows Phone — Александр Волохин, 2ГИС

MVVM framework Caliburn.Micro

• Поддержка навигации посредством NavigationService• Методы Activate() и Deactivate()• Поддержка сохранения состояния• Встроенная поддержка IoC контейнера• Поддержка Pivot, декомпозиция для PivotItems• Открытый исходный код и низкий порог вхождения

Page 10: Как мы делали оффлайн-карты под Windows Phone — Александр Волохин, 2ГИС

Наши доработки в Caliburn.Micro

• Бинарная сериализация с помощью SharpSerializer • NavigationService для двухуровневой навигации

Page 11: Как мы делали оффлайн-карты под Windows Phone — Александр Волохин, 2ГИС

Двухуровневая навигация

Page 12: Как мы делали оффлайн-карты под Windows Phone — Александр Волохин, 2ГИС

Доставляем данные

{

 "data": "Hello, offline!"

}

Page 13: Как мы делали оффлайн-карты под Windows Phone — Александр Волохин, 2ГИС

Доставляем шаблоны

<DataTemplate x:Key="Key">

<TextBlock Text="{Binding [data]}"/>

</DataTemplate>

// Используем XamlReader.Load()

Page 14: Как мы делали оффлайн-карты под Windows Phone — Александр Волохин, 2ГИС

Универсальный DataContextpublic class DynamicDataContext

{

public object this[string key]

{

get

{

return dictionary[key];

}

}

private Dictionary<string, object> dictionary;

}

Page 15: Как мы делали оффлайн-карты под Windows Phone — Александр Волохин, 2ГИС

Доставили

1. Парсим JSON -> ViewModel2. Парсим XAML -> View3. DataBinding через

индексатор4. Profit!

Page 16: Как мы делали оффлайн-карты под Windows Phone — Александр Волохин, 2ГИС

Верстка. Дизайнеры. Что делать

?

Page 17: Как мы делали оффлайн-карты под Windows Phone — Александр Волохин, 2ГИС

Microsoft Expression Blend 2013

Page 18: Как мы делали оффлайн-карты под Windows Phone — Александр Волохин, 2ГИС

Blend. Хьюстон, у нас проблемы

Page 19: Как мы делали оффлайн-карты под Windows Phone — Александр Волохин, 2ГИС

Blend. Просто ничего не отображает

Page 20: Как мы делали оффлайн-карты под Windows Phone — Александр Волохин, 2ГИС

// Готовим Blend:// дебажим ошибки в DesignTime,// настраиваем d:DataContext — // profit!

Page 21: Как мы делали оффлайн-карты под Windows Phone — Александр Волохин, 2ГИС

// Очень нужна сортировка

Page 22: Как мы делали оффлайн-карты под Windows Phone — Александр Волохин, 2ГИС

// Верстаем по сетке.// По такой же, которую// использует дизайнер.

Page 23: Как мы делали оффлайн-карты под Windows Phone — Александр Волохин, 2ГИС

Переходим на Universal App

• 4 недели, 3 разработчика, 150 проектов• Отказываемся от сторонних библиотек элементов

управления

Page 24: Как мы делали оффлайн-карты под Windows Phone — Александр Волохин, 2ГИС

ScaleFactor изменился

было

стало

Page 25: Как мы делали оффлайн-карты под Windows Phone — Александр Волохин, 2ГИС

Спасибо! • Офлайн• Ядро на C++, UI на C#/XAML• 3D-карта через Angle• Caliburn.Micro• DataTemplates отдельно от

приложения• Верстаем в Blend• Universal App

Page 26: Как мы делали оффлайн-карты под Windows Phone — Александр Волохин, 2ГИС

Новый 2GIS. Качаем!

«Идеально. Спасибо, я так ждал» © Давид

Page 27: Как мы делали оффлайн-карты под Windows Phone — Александр Волохин, 2ГИС

©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.