НОВОСТИ

Карты в Apple Watch не работают нормально уже больше года. Apple watch яндекс навигатор


2ГИС вам на руку. Как мы добавили карту на Apple Watch / Блог компании 2ГИС / Хабр

Apple Watch быстро завоевали популярность и стали самыми популярными часами в мире, опередив Rolex и остальных производителей. Идея создания приложения для часов витала в офисе 2ГИС с 2015 года.

До нас полноценное приложение с картой на часах выпустила только сама Apple. Приложение Яндекс.Карт отображает лишь виджеты пробок и время в пути до дома и работы. Яндекс.Навигатор, Google Maps, Waze и Maps.Me вообще недоступны на часах.

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

Загляните под кат, чтобы узнать, как пет-проджект вырос в полноценный продукт.

UPD.: https://github.com/teanet/DemoWatch

Мы решили делать карту. Что было на старте?

  1. Опыт разработки на часах — 2 дня работы над тестовым проектом.
  2. Опыт работы со SpriteKit — 0 дней.
  3. Опыт написания MapKit – 0 дней.
  4. Сомнения, что что-то может пойти не так — ∞.

Итерация 1 — полет мысли

Мы серьезные люди, поэтому для начала решили составить план работ. Учли, что мы работаем в жестко распланированном спринте, имеем пять сторипоинтов на «мелкопродуктовые задачи» и полное незнание, с чего начать.

Карта — это очень большая картинка. Картинки на часах мы показывать умеем, значит и с показом карты справимся.

У нас есть сервис, который умеет резать карту на кусочки:

Если нарезать такую картинку и положить в WKImage, получим самый простой рабочий прототип за пять копеек.

А если на эту картинку добавить PanGesture и на каждый свайп устанавливать новую картинку, то получим симуляцию взаимодействия с картой.

/Радуемся/ Звучит ужасно, выглядит примерно так же, работает еще хуже, но по факту задача выполнена.

Итерация 2 — минимальный прототип

Непрерывная загрузка картинок дорого обходится батарее в часах. Да и само время загрузки страдает. Нам хотелось получить что-то более полноценное и отзывчивое. Краем уха мы слышали, что в часах есть поддержка SpriteKit — единственного фреймворка под WatchOS, с возможностью использовать координаты, зум и кастомизировать всё это великолепие под себя.

После пары часов StackOverflow Driven Development (SDD) получаем вторую итерацию: Один SKSpriteNode, один WKPanGestureRecognizer.

/Радуемся/ Да это же MapKit за 6 копеек, полностью рабочий. Срочно в релиз!

Итерация 3 —добавляем тайлы и зум

Когда эмоции спали, задумались, куда же идти дальше.

Поняли, что важнее всего:

  • Заменить картинку на тайлы.
  • Подложить 4 тайла в бандл приложения и соединить их вместе.
  • Обеспечить зум картинки. Закинем 4 тайла в бандл приложения, потом положим их на некую:
let rootNode = SKSpriteNode()

с помощью нехитрой математики соединим их вместе. Зум делаем через WKCrownDelegate:

internal func crownDidRotate( _ crownSequencer: WKCrownSequencer?, rotationalDelta: Double ) { self.scale += CGFloat(rotationalDelta * 2) self.rootNode.setScale(self.scale) }

/Радуемся/ Ну теперь то точно всё! Пару фиксов, и в мастер.

Итерация 4 — оптимизируем взаимодействие с картой

На следующий день оказалось, что для SpriteKit anchorPoint не влияет на зум. Зум полностью игнорирует anchorPoint и происходит относительно центра rootNode. Получается, что на каждый шаг зума нам нужно корректировать позицию.

Также было бы неплохо грузить тайлы с сервера, а не хранить весь мир в памяти часов. Не забываем, что тайлы стоит привязать к координатам, чтобы они лежали не в центре SKScene, а на соответствующих местах на карте.

Тайлы выглядят примерно так:

Для каждого zoomLevel (далее «z») идет свой набор тайлов. Для z = 1 у нас 4 тайла составляют весь мир.

для z = 2 — для того, чтобы покрыть весь мир, нужно уже 16 тайлов, для z = 3 — 64 тайла. для z = 18 ≈ 68 * 10^9 тайлов. Теперь их нужно положить в мир SpriteKit.

Размер одного тайла 256 * 256 pt, значит для z = 1 размер «мира» будет равен 512 * 512 pt, для z = 2 размер «мира» будет равен 1024 * 1024 pt. Для простоты расчетов положим тайлы в мир следующим образом:

Закодируем тайл:

let kTileLength: CGFloat = 256 struct TilePath { let x: Int let y: Int let z: Int }

Определим координату тайла в таком мире:

var position: CGPoint { let x = CGFloat(self.x) let y = CGFloat(self.y) let offset: CGFloat = pow(2, CGFloat(self.z - 1)) return CGPoint(x: kTileLength * ( -offset + x ), y: kTileLength * ( offset - y - 1 )) } var center: CGPoint { return self.position + CGPoint(x: kTileLength, y: kTileLength) * 0.5 }

Расположение удобно, так как позволяет привести всё в координаты реального мира: latitude/longitude = 0, что как раз в центре «мира».

latitude/longitude реального мира преобразуются в наш мир следующим образом:

extension CLLocationCoordinate2D { // относительное положение в мире ( -1 < TileLocation < 1 ) func tileLocation() -> CGPoint { var siny = sin(self.latitude * .pi / 180) siny = min(max(siny, -1), 1) let y = CGFloat(log( ( 1 + siny ) / ( 1 - siny ))) return CGPoint( x: kTileLength * ( 0.5 + CGFloat(self.longitude) / 360 ), y: kTileLength * ( 0.5 - y / ( 4 * .pi ) ) ) } // абсолютное положение в мире для нужного zoomLevel func location(for z: Int) -> CGPoint { let tile = self.tileLocation() let zoom: CGFloat = pow(2, CGFloat(z)) let offset = kTileLength * 0.5 return CGPoint( x: (tile.x - offset ) * zoom, y: (-tile.y + offset) * zoom ) } }

С зум левелами огребли проблем. Пришлось потратить пару выходных, чтобы собрать в кучу весь математический аппарат и обеспечить идеальное слияние тайлов. То есть тайл для z = 1 должен при зуме идеально переходить в четыре тайла для z = 2 и наоборот, четрые тайла для z = 2 должны переходить в один тайл для z = 1.

Кроме того, понадобилось превратить линейный зум в экспотенциальный, так как зумы меняются от 1 <= z <= 18, а карта масштабируется, как 2^z.

Плавный зум обеспечивается постоянной корректировкой положения тайлов. Важно, чтобы тайлы сшивались ровно посередине: то есть, чтобы тайл уровня 1 переходил в 4 тайла уровня 2 при зуме 1.5.

SpriteKit под капотом использует float. Для z = 18 у нас получается разброс координат (-33 554 432/33 554 432), а точность float – 7 разрядов. На выходе имеем погрешность в районе 30 pt. Чтобы избежать возникновение «щелей» между таймами, размещаем видимый тайл максимально близко к центру SKScene.

/Радуемся/ После всех этих телодвижений получили готовый к тестированию прототип.

Релиз

Так как приложение толком не имело ТЗ, мы нашли пару добровольцев, чтобы провести небольшое тестирование. Особых проблем не нашли, и решили выкатывать в стор.

После релиза оказалось, что на часах первой серии процессор не успевает отрисовать первый кадр карты за 10 секунд и падает по таймауту. Пришлось изначально создавать карту полностью пустой, чтобы уложиться в 10 секунд, а потом постепенно грузить подложку. Сначала разрабатывать все уровни карты — а потом грузить для них тайлы.

Очень много времени ушло на отлаживание сети, правильную настройку кеша и малый Memory Footprint, чтобы WatchOS максимально долго не пытался убить наше приложение.

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

Итоги и планы на будущее

Мы уже можем отображать на карте маршрут с маневрами, построенными в основном приложении. Функция будет доступна в одном из ближайших релизов.

Проект, который изначально казался невыполнимым, оказался крайне полезным лично для меня. Часто пользуюсь приложением, чтобы понять, скоро ли выходить на нужной остановке. Верю, что зимой оно окажется еще полезнее.

Заодно в очередной раз убедился, что не так важна сложность проекта, вера окружающих в успех задачи или наличие свободного времени на работе. Главное — это желание сделать проект и нудное, постепенное движение к цели. В итоге у нас есть полноценный MapKit, который почти ничем не ограничен и работает с 3 WatchOS. Его можно дорабатывать как хочется, не ожидая, когда Apple выкатит подходящий API для разработки.

P.S. Для интересующихся могу выложить готовый проект. Уровень кода там далек от production. Но, согласно военному принципу, — не важно, как это работает, главное, что работает!

habr.com

Яндекс перезапустил Яндекс.Карты для iPhone, iPad и Apple Watch

Компания «Яндекс» анонсировала масштабное обновление приложения Яндекс.Карты для мобильных устройств на iOS. Разработчики полностью переделали мобильный клиент и добавили новые возможности.

Яндекс.Карты могут похвастаться несколькими полезными нововведениями. Во-первых, в поиске приложения появились фильтры для выбора по разным критериям, а в карточках заведений — отзывы посетителей и фотографии. Теперь пользователь, например, может заранее ознакомиться с интерьером кафе или ресторана, прочитать мнения других пользователей сервиса.

Также как в Google Maps сохранённые места в новых Яндекс.Картах привязаны к учётной записи, их можно собирать в списки и потом просматривать с любого компьютера, iPhone или iPad.

Изменения коснулись работы с маршрутами: Карты наглядно показывают варианты проезда, подсказки в пути и другие детали поездки — на автомобиле или общественном транспорте (по просьбам пользователей добавлены электрички). А все разговоры и дорожные события теперь можно прокомментировать.

Карты полностью адаптированы под iOS 9, watchOS 2, iPad Pro и последние модели iPhone и поддерживают их новые возможности. В том числе прямо через поиск Spotlight можно найти организации, которые пользователь недавно открывал в приложении.

Кроме того, на iPhone 6s и iPhone 6s Plus появилась поддержка «быстрых действий». Если чуть сильнее нажать на иконку приложения, откроется меню быстрого доступа к маршрутам до дома и работы, сохранённым местам и поиску организаций поблизости.

Скачать Яндекс.Карт 7.0 для iPhone, iPad и Apple Watch можно бесплатно в App Store.

Следите за новостями Apple в нашем Telegram-канале, а также в приложении MacDigger на iOS.

Присоединяйтесь к нам в Twitter, ВКонтакте, Facebook, Google+ или через RSS, чтобы быть в курсе последних новостей из мира Apple, Microsoft и Google.

Поделись этой статьей с друзьями

www.macdigger.ru

Карты в Apple Watch не работают нормально уже больше года

Трудно представить ситуацию, когда вам захочется использовать карты не на большем дисплее iPhone, а на крошечном экране Apple Watсh. Тем не менее, случаи в жизни бывают разные, и лучше иметь возможность открыть карты на Apple Watch, чем нет. Однако вы можете столкнуться с тем, что Apple Watch просто не отображают карту. Выглядит это следующим образом.

Часы точно определяют геолокацию, полноценно взаимодействуют с навигацией, если ее запустить в стандартном приложении «Карты» на iPhone, но при этом самих карт на экране часов нет, присутствует лишь сетка. 

Еще год назад пользователи форума Reddit поднимали эту тему, а на форуме MacRumors соответствующая тема датируется 22 мая 2015 года. Удивительно, но данная проблема до сих пор сохраняется, об этом свидетельствуют сообщения на официальном форуме поддержки Apple и наш личный опыт. Мы проверили работу карт на iPhone 7 Plus в связке с Apple Watch Series 2, iPhone SE и Apple Watch Series 1 и Apple Watch первого поколения с iPhone 6. Результат везде был одинаковый – пустая сетка без карт.

Нет проверенной инструкции, которая позволяет точно исправить данную проблему, или понять её причины. У некоторых пользователей Apple Watch нет никаких проблем с работой карт. Есть лишь общие рекомендации что делать, если вы с таким столкнулись, но они не гарантированно решают проблему.

Убедитесь, что ваш iPhone подключен к интернету, а в настройках включены службы геолокации. Приложение на Apple Watch использует iPhone, чтобы подгружать данные и определять точное местоположение (Apple Watch Series 2 могут делать это самостоятельно с помощью встроенного GPS), поэтому нужно убедиться, что проблема не связана со смартфоном.

Если с iPhone все в порядке, то попробуйте перевести в «Авиарежим» iPhone и Apple Watch, а потом соединить их заново. Если это не исправило ситуации, то сбросьте Apple Watch и создайте пару с iPhone заново. Учитывая то, что проблема существует столь продолжительное время, она связана с программными особенностями работы Apple Watch, а не проблемами в взаимодействии часов и iPhone. Решить её полноценно сможет только Apple обновлениями WatchOS. 

www.iguides.ru

Как убедиться в том, что GPS на Apple Watch работает?

Разница между Apple Watch Series 1 и Apple Watch Series 2 невелика –  у вторых чуть ярче дисплей, есть водонепроницаемость и встроенный GPS. Последний на презентации особенно хвалили, как возможность использовать часы независимо от iPhone. Если раньше для того, чтобы слушать музыку и следить за пройденным расстоянием во время пробежки необходимо было иметь при себе телефон и часы, то теперь iPhone можно оставить дома, ограничившись Apple Watch с загруженной предварительно музыкой.

Однако работа GPS на Apple Watch реализована ненаглядно. В watchOS даже нет характерного обозначения, показывающего, что GPS активен. Отследить его работу можно только уже по факту, синхронизировав данные с iPhone.

Как убедиться в том, что GPS на Apple Watch работает?

Чтобы активировать работу GPS на Apple Watch необходимо проверить соответствующую настройку в iPhone. Звучит смешно, но даже получив собственный GPS, Apple Watch остаются зависимы от iPhone – чтобы залить на них музыку вам нужен телефон, без синхронизации с iPhone часы не включатся, а все основные настройки производятся через фирменное приложение или настройки в iOS.

Активировать работу GPS в Apple Watch можно следующим образом: «Настройки» > Конфиденциальность» > «Службы геолокации». В этом меню необходимо убедиться, что службы геолокации включены, а также включить службу «Калибровка учета движения».

Следующим шагом необходимо надеть на руку Apple Watch и запустить стандартное приложение «Тренировка». Открыв приложение, нужно выбрать тип тренировки (ходьба или бег), цель (конкретная или никакой) и начать тренировку. После этого необходимо 20 минут дать поработать приложению для первоначальной настройки, за это время оно откалибрует точно работы GPS и встроенного в Apple Watch акселерометра. 

В Apple Watch используется интеллектуальная система, которая улучшает точность сбора данных с каждой тренировкой – чем больше вы занимаетесь, тем точнее акселерометр фиксирует данные. Проанализировать точность данных, которые собирают Apple Watch, можно только с помощью iPhone, приложение на экране часов показывает лишь общую информацию. Если вам покажется, что они ошибочны, то необходимо откалибровать Apple Watch заново.

Для этого на iPhone запустите приложение «Watch», перейдите во вкладку «Мои часы», затем нажмите «Конфиденциальность» > «Движение и фитнес» > «Сбросить данные калибровки». 

www.iguides.ru

‎App Store: Sygic GPS-навигация, карты

  • 17.4.5
    25 окт. 2018 г.

    Сегодня у нас отличные новости!• Спланируйте свой маршрут на компьютере и отправьте его себе на мобильный телефон с помощью новой функции «Планировщик маршрутов» на maps.sygic.com

  • 17.4.4
    23 окт. 2018 г.

    Сегодня у нас отличные новости! • Спланируйте свой маршрут на компьютере и отправьте его себе на мобильный телефон с помощью новой функции «Планировщик маршрутов» на maps.sygic.com

  • 17.4.3
    26 сент. 2018 г.

    Исправления и общие улучшения, которые ускорят его работу

  • 17.4.2
    11 сент. 2018 г.

    Сегодня мы приготовили для вас отличные обновления:• совершенно новая функция предсказания маршрута с более точным вычислением маршрута на основе прогнозирования трафика• свежие новые карты, как раз к ваших летних путешествиям• Исправлены крупные ошибки, связанные с подключением через Bluetooth и голосами озвучивания навигацииСчастливого вождения!

  • 17.4.1
    29 июня 2018 г.

    Сегодня мы приготовили для вас отличные обновления:• совершенно новая функция предсказания маршрута с более точным вычислением маршрута на основе прогнозирования трафика• свежие новые карты, как раз к ваших летних путешествиям• Исправлены крупные ошибки, связанные с подключением через Bluetooth и голосами озвучивания навигацииСчастливого вождения!

  • 17.4.0
    12 июня 2018 г.

    Сегодня мы приготовили для вас отличные обновления:• совершенно новая функция предсказания маршрута с более точным вычислением маршрута на основе прогнозирования трафика• свежие новые карты, как раз к ваших летних путешествиямСчастливого вождения!

  • 17.3.9
    24 мая 2018 г.

    • Множество улучшений и исправлений ошибок на основе ваших отзывов

  • 17.3.8
    21 мая 2018 г.

    • Множество улучшений и исправлений ошибок на основе ваших отзывов

  • 17.3.7
    5 мая 2018 г.

    • Множество улучшений и исправлений ошибок на основе ваших отзывов

  • 17.3.6
    3 мая 2018 г.

    • Множество улучшений и исправлений ошибок на основе ваших отзывов

  • 17.3.5
    16 апр. 2018 г.

    • Множество улучшений и исправлений ошибок на основе ваших отзывов

  • 17.3.4
    5 апр. 2018 г.

    • Множество улучшений и исправлений ошибок на основе ваших отзывов

  • 17.3.3
    14 февр. 2018 г.

    • Мы также ввели несколько улучшений в работу приложения и исправили баги, теперь оно надежное, как часы

  • 17.3.2
    11 янв. 2018 г.

    Внимание! Прямо сейчас у нас готовы специальные обновления для вас. • Мы также ввели несколько улучшений в работу приложения и исправили баги, теперь оно надежное, как часы

  • 17.3.1
    3 янв. 2018 г.

    Внимание! Прямо сейчас у нас готовы специальные обновления для вас. • Мы разделили крупнейшие страны на регионы, чтобы оставить больше места для фотографий и видео на вашем устройстве.• Также добавлены новые карты с актуальной дорожной информацией.• Вы стали счастливым обладателем iPhone X? Мы адаптировали наше приложение, и теперь оно идеально подходит для нового дисплея. Воспользуйтесь версией приложения с полной поддержкой iPhone X.

  • 17.2.3
    25 сент. 2017 г.

    Множество улучшений и исправлений ошибок на основе ваших отзывов.

  • 17.2.2
    17 июля 2017 г.

    Сегодня особенный день! Наше последнее обновление содержит великолепные новые функции:• Real View Navigation — премиум-функция, использующая дополненную реальность для повышения удобства вожденияОбновление карт:• Обновленные карты с самыми последними дорогами и местами

  • 17.2.1
    28 июня 2017 г.

    Сегодня особенный день! Наше последнее обновление содержит великолепные новые функции:• Навигация с реальным обзором — навигация с функцией дополненной реальности для еще более комфортного вождения

  • 17.2.0
    15 июня 2017 г.

    Ознакомьтесь с преимуществами очередного обновления:• Запуск системы навигации стал более легким и интуитивно понятным• Добавлять к маршруту промежуточные точки или изменять точку отправления стало значительно проще• Вы можете стирать отдельные карты на устройстве в автономном режиме• Еще больше возможностей для исследования окружающего мира — просто коснитесь карты, чтобы просмотреть сведения о близлежащих объектах в приложении Sygic Travel• Повышена производительность и устранены ошибки

  • 17.1.0
    23 мая 2017 г.

    Сегодня у нас отличные новости! Мы подготовили для вас масштабное обновление с новым умным поиском и современными картами. • Улучшенный поиск – теперь вы можете намного легче и быстрее находить адреса и интересные вам места • Новейшие карты с добавлением последних дорог & новый, свежий дизайн • Добавлено более 300 000 новых точек интереса• Улучшенное управление жестами – теперь пользоваться приложением можно еще быстрее и проще • Мы также ввели несколько улучшений в работу приложения и исправили баги, теперь оно надежное, как часы

  • 16.4.4
    18 апр. 2017 г.

    Усовершенствования и оптимизации

  • 16.4.3
    8 мар. 2017 г.

    Усовершенствования и оптимизации

  • 16.4.2
    24 янв. 2017 г.

    Усовершенствования и оптимизации

  • 16.4.1
    13 дек. 2016 г.

    • Пользуйтесь обновленными картами с самыми последними данными о дорогах и объектах• Мы исправили ошибки виджета и в функциях "поделиться маршрутом" и "напоминание о парковке"• Множество улучшений и исправлений ошибок на основе ваших отзывов

  • 16.4.0
    22 нояб. 2016 г.

    • Делитесь маршрутом с помощью Glympse: Поделитесь своим запланированным маршрутом, предполагаемым временем прибытия и местоположение на карте в режиме реального времени.• Бесплатное напоминание о парковке: Позвольте приложению предупредить Вас, когда истечет время Вашей парковки, чтобы Вы избежали дополнительных денежных взносов.• Индикатор выполнения маршрута с информацией дорожного движения вернулся!• Плюс несколько незначительных улучшений и устранений ошибок.

  • itunes.apple.com