47

Что API Карт забыл на сервере — Антон Корзунов

  • Upload
    yandex

  • View
    2.112

  • Download
    2

Embed Size (px)

DESCRIPTION

Принято считать, что API Карт — это JavaScript-библиотека, которая работает в браузере. Это утверждение верно ровно в той степени, в какой сферичен конь в вакууме. Из доклада вы узнаете, зачем API нужен бэкенд, почему писать его придётся вам и как API Карт будет помогать этой задаче с фронтенда. P.S. Будет интересно разным слоям населения.

Citation preview

Page 1: Что API Карт забыл на сервере — Антон Корзунов
Page 2: Что API Карт забыл на сервере — Антон Корзунов

карты

Что API Яндекс.Карт забыли на сервере?

Антон Корзунов, фронтенд разработчик

Я.Субботник в Минске, 30.08.2014

Page 3: Что API Карт забыл на сервере — Антон Корзунов

Что такое карты?И что такое API?

Page 4: Что API Карт забыл на сервере — Антон Корзунов

Фронтендер

4

Бэкендер

Fullmetal Alchemist

Page 5: Что API Карт забыл на сервере — Антон Корзунов

Так что такое карты?

Page 6: Что API Карт забыл на сервере — Антон Корзунов

Карты – это карты

Карты – это тайлы.

Тайлы – это картинки.

Картинки – это файлы.

Здесь – 17 картинок.

6

Page 7: Что API Карт забыл на сервере — Антон Корзунов

Карты – это ответ сервера

Здесь – 25 картинок

PS: гибрид + пробки это 3 слоя.

x3 = 75 картинок

x1M DAU = ?

7

Page 8: Что API Карт забыл на сервере — Антон Корзунов

8Fullmetal Alchemist

Page 9: Что API Карт забыл на сервере — Антон Корзунов

Вот зачем нужен API

9ymapsapi.ya.ru/replies.xml?item_no=892

Page 10: Что API Карт забыл на сервере — Антон Корзунов

Горькая правда

1. Маркер – это не геообъект.

2. Геообъект – это любой объект на карте.

3. Геообъект – это класс ymaps.GeoObject.

4. Это команда, которую подает нам не наш код.

10

Page 11: Что API Карт забыл на сервере — Антон Корзунов

Мы просто исполняем желания

11

Page 12: Что API Карт забыл на сервере — Антон Корзунов

Активные области!

12

Page 13: Что API Карт забыл на сервере — Антон Корзунов

Активные областиРецепт приготовления:

Взять один YMapsAPI, добавить тайлов с сервера, сверху полить данными.

Перемешать, но не взбалтывать!

ВНИМАНИЕ! Если у вас нет тайлорезки или онлайн генератора нужных изображения - обратитесь к бэкендерам.

Эти компоненты в поставку не входят!

13

Page 14: Что API Карт забыл на сервере — Антон Корзунов

Активные области

Рецепт приготовления:

YMapsML + hsTiler

ВНИМАНИЕ! Если у вас нету тайлорезки или онлайн генератора нужных изображения - обратитесь к бэкендерам.

Эти компоненты в поставку не входят!

14

Page 15: Что API Карт забыл на сервере — Антон Корзунов

В том числе

Мобильный интернет не везде есть и не всегда быстр.

Никаких server-side rendered картинок.

Весь рендеринг на клиенте.

PS. Ну еще это круто и модно.

И «можно».

15

Page 16: Что API Карт забыл на сервере — Антон Корзунов

16

Page 17: Что API Карт забыл на сервере — Антон Корзунов

Передача данных в браузер

17

<?php foreach($objects as $obj): ?> myPlacemark = new ymaps.Placemark(["<?=$obj['lantitude'];?>" ,"<?=$obj['longitude'];?>" ]); myMap.geoObjects.add(myPlacemark);<?php endforeach;?>

<script> for( var i in objects) { myPlacemark = new ymaps.Placemark([object[i].lat,object[i].lng]);

myMap.geoObjects.add(myPlacemark);

</script>

Page 18: Что API Карт забыл на сервере — Антон Корзунов

ObjectManager

Новая сущность в API 2.1

Полностью управляет обьектами на карте

Умеет кластеризовать, скрывать не видимое, фильтровать, играть в покер, радовать девушек

Питается JSON

18Fullmetal Alchemist

Page 19: Что API Карт забыл на сервере — Антон Корзунов

ObjectManager

19

JSON

Page 20: Что API Карт забыл на сервере — Антон Корзунов

ObjectManager$.ajax({

url: "objects.json"

}).done(function(data) {

objectManager.add(JSON.parse(data));

});

PS. И все.20

Page 21: Что API Карт забыл на сервере — Антон Корзунов

21Fullmetal Alchemist

Page 22: Что API Карт забыл на сервере — Антон Корзунов

Это боль и клиента

22

И сервера…

Page 23: Что API Карт забыл на сервере — Антон Корзунов

Загрузка по видимым границам

Page 24: Что API Карт забыл на сервере — Антон Корзунов

По каким границам?

Page 25: Что API Карт забыл на сервере — Антон Корзунов

ORDER BY LIMIT 50

От малейшего сдвига выборка данных может измениться.

Называется - «Прыгает и скачет».

Никого не тревожит.

25

Page 26: Что API Карт забыл на сервере — Антон Корзунов

Цель - накормить клиента

Теория:

Codefest, 2012

Dump-it,2012

Стачка!, 2014

Практика:

?! ????

26

Page 27: Что API Карт забыл на сервере — Антон Корзунов
Page 28: Что API Карт забыл на сервере — Антон Корзунов

LoadingObjectManager

ObjectManager + Механиз загрузки

1. Производит «оптимальную» загрузку данных с сервера, их обработку и показ.

2. …..

3. …..

28Fullmetal Alchemist

Page 29: Что API Карт забыл на сервере — Антон Корзунов

RemoteObjectManager

ObjectManager + Механиз загрузки

1. Производит «оптимальную» загрузку данных с сервера, их обработку и показ.

2. ……

3. ……

29Fullmetal Alchemist

Page 30: Что API Карт забыл на сервере — Антон Корзунов

Пингвины захватывают Мир!

Page 31: Что API Карт забыл на сервере — Антон Корзунов

И опять – эти карты

Здесь – 17 тайлов

17 запросов

(или один)

31

Page 32: Что API Карт забыл на сервере — Антон Корзунов

И опять эти карты

Здесь – 25 тайлов

Но только 8 новых.

Иного 8 новых запросов

(или один)

32

Page 33: Что API Карт забыл на сервере — Антон Корзунов

Тайлы

Основа карты:

1. Квадратная область 256x256.

2. Каждый тайл «делится» на 4.

3. Это образует пирамиду.

33

Page 34: Что API Карт забыл на сервере — Антон Корзунов

LoadingObjectManager

ObjectManager + Механиз загрузки

1. Производит «оптимальную» загрузку данных с сервера, их обработку и показ.

2. Обеспечивает связность между зумами «по пирамиде».

3. Кластеризация на клиенте и все такое.

34Fullmetal Alchemist

Page 35: Что API Карт забыл на сервере — Антон Корзунов

RemoteObjectManager

ObjectManager + Механиз загрузки

1. Производит «оптимальную» загрузку данных с сервера, их обработку и показ.

2. Стирает данные при смене зума.

3. Поддерживает серверную кластеризацию.

35Fullmetal Alchemist

Page 36: Что API Карт забыл на сервере — Антон Корзунов

var remoteObjectManager = new ymaps.RemoteObjectManager(‘http://localhost:1234/?bbox=%b&tile=%c&zoom=%z', {

//splitRequests: true, //paddingTemplate: 'managerResponse_%c', });map.geoObjects.add(remoteObjectManager);

Просто и удобноurlTemplate + опции => запросы

%b => BoundingBox, в геокоординатах

%c => %x,%y,%z - тайловые координаты

36

Page 37: Что API Карт забыл на сервере — Антон Корзунов

Тайлы, тайлы, тайлы

http://msdn.microsoft.com/en-us/library/bb259689.aspx

Page 38: Что API Карт забыл на сервере — Антон Корзунов

Бэкенд – доволен

38Fullmetal Alchemist

Page 39: Что API Карт забыл на сервере — Антон Корзунов

Ложка дёгтя

39

Пирамида тайлов = нулевая избыточность

Полный набор данных на клиенте

И возможность получить слишком много данных

«Полная» избыточность

Поддержка «limit»ов отдаваемых данных

Серверная кластеризация*

LoadingObjectManager RemoteObjectManager

* и чего только на свете не бывает

Page 40: Что API Карт забыл на сервере — Антон Корзунов

Ложка дёгтя

40

Пирамида тайлов = нулевая избыточность

Полный набор данных на клиенте

И возможность получить слишком много данных

«Полная» избыточность

Поддержка «limit»ов отдаваемых данных

Серверная кластеризация*

LoadingObjectManager RemoteObjectManager

* и чего только на свете не бывает

Page 41: Что API Карт забыл на сервере — Антон Корзунов

карты, Карты, карточки

41

Page 42: Что API Карт забыл на сервере — Антон Корзунов

А что если пойти глубже?

42к.ф. «Начало»

Page 43: Что API Карт забыл на сервере — Антон Корзунов

RTFM

Документация: api.yandex.ru/maps/

«Клуб»: clubs.ya.ru/mapsapi/

43

Page 46: Что API Карт забыл на сервере — Антон Корзунов

Спасибо за внимание!

Page 47: Что API Карт забыл на сервере — Антон Корзунов

Разработчик API Карт

@thekashey

[email protected]

Спасибо!

Антон Корзунов

theKashey