SlideShare une entreprise Scribd logo
1  sur  84
Télécharger pour lire hors ligne
1
2
Использование
API Яндекс.Карт.
Особенности версии 2.1
Всеволод Шмыров
3
API Яндекс.Карт
4
Поддержка актуальных браузеров
5
Обратная совместимость
6
Версии API
… 2.0.33 2.0.34
2.1-b 2.1.1 2.1.2 …2.1.3
2.0.35 2.0.36 2.0.37 …2.0.38
7
8
Версия 2.1
9
Отличительные особенности 2.1:
• Отказ от поддержки устаревших
браузеров (особенно от IE 6 и 7)
• Частичное изменение программного
интерфейса со сломом обратной
совместимости
• Ориентирование на различные типы
устройств
10
Пример http://example...
11
Контролы в 2.0
Пример http://bit.ly/1q8lO6O
12
Контролы в 2.1
Пример http://bit.ly/1qcVV7N
13
Пример http://bit.ly/1fXXiAG
14
Три состояния размера контролов
Large
Medium
Small
15
Пример http://bit.ly/1fXXiAG
16
Пример http://bit.ly/1fXXiAG
17
Пример http://bit.ly/1fXXiAG
18
19
Опция size контролов
button.options.set(‘size’, ‘small’);
// значение по умолчанию “auto”
20
Своя кнопка в 2.1
Large
Medium
Small
Пример http://jsfiddle.net/6Zv3X/1/
21
Своя кнопка в 2.1
new ymaps.control.Button({
data: {
content: 'Моя кнопка',
image: 'http://site/img.button.svg'
}
});
Пример http://jsfiddle.net/6Zv3X/1/
22
2.0 2.1
23
Другие изменения в
контролах
24
Позиционирование контролов в 2.0
50px
50px
25
Абсолютное позиционирование в 2.0
map.controls.add(button1,
{top: 50, left: 50});
map.controls.add(button2,
{top: 50, left: 105});
map.controls.add(button3,
{top: 50, left: 160});
26
var group = new ymaps.control.Group({
items: [ button1, button2, button3 ]
});
Плавающее позиционирование в 2.0
27
Позиционирование контролов в 2.1
map.controls.add(button3, {float: 'right', floatIndex: 1});
map.controls.add(button4, {position: {top: 50, right: 50}});
Пример http://bit.ly/PAGSrA
28
Элемент управления «Fullscreen»
Пример http://bit.ly/1eiVG3J
29
Элемент управления «Fullscreen»
Пример http://bit.ly/1eiVG3J
30
Наборы контролов
31
var map = new ymaps.Map('map', {
center:
[53.90473, 27.551899],
zoom: 10
});
map.controls
.add('zoomControl')
.add('typeSelector')
.add('trafficControl')
.add('mapTools');
var map = new ymaps.Map('map', {
center:
[53.90473, 27.551899],
zoom: 10
//, controls: []
});
Пример http://bit.ly/1h4lVzT
32
Набор контролов для большой карты
map.controls.add(‘largeMapDefaultSet’);
33
Набор контролов для средней карты
map.controls.add(‘mediumMapDefaultSet’);
34
Набор контролов для маленькой карты
map.controls.add(‘smallMapDefaultSet’);
35
Балун
36
Балун в 2.1
Пример http://bit.ly/1so6Ygt
37
Балун в маленькой карте (2.0)
38
Балун в маленькой карте (2.1)
Пример http://bit.ly/1so6Ygt
39
Создание балуна геообъекта
var placemark = new ymaps.Placemark(
map.getCenter(), {
balloonContentBody: ‘Информация в балуне’
}
);
Пример http://bit.ly/1so6Ygt
40
Новые метки
41
Метки в 2.0
Пример http://bit.ly/1jlcrQa
42
SVG Метки 2.1
• Меньший объем загружаемых
данных
• Хорошо отображаются на retina
дисплеях
• Новые возможности для
разработчиков
43
Метки на Retina дисплеях
x1
x1
x5
x5
44
Стандартные макеты меток в 2.1
45
Стандартный макет метки в 2.1
new ymaps.Placemark(
geoPosition, {}, {
iconColor: '#5f3fcd'
}
);
Пример http://bit.ly/1e2bDRo
46
Новый язык
шаблонов макетов
47
Создание своего HTML-макета
var layout =
ymaps.templateLayoutFactory.createClass(
'<div class=customButton>123</div>'
);
48
Пример создания своей HTML метки
layout =
ym.templateLayoutFactory.createClass(
'<div class=placemark></div>'
),
placemark = new ym.Placemark(
map.getCenter(), {}, {
iconLayout: layout
});
Пример http://bit.ly/1jlcPOJ
49
Новый язык шаблонов макетов
[if !data.message]
Нет ни одной записи
[else]
$[[data.message]]
$[data.sublayout]
[endif]
{% if !data.message %}
Нет ни одной записи
{% else %}
{{ data.message }}
{% include data.sublayout %}
{% endif %}
50
Итерация в шаблоне макета
var balloonLayout =
ymaps.templateLayoutFactory.createClass(
'<ul>' +
'{% for listItem in properties.wishList %}' +
'<li>{{ listItem }}</li>' +
'{% endfor %}' +
'</ul>'
);
var placemark = new ymaps.Placemark(
map.getCenter(),
{ wishList: [ 'Дорогая машина', 'Дом на
побережье', 'Portal gun' ] },
{ balloonContentLayout: balloonLayout }
);
Пример http://bit.ly/1q8jsom
51
Подключение API
52
Пакеты в версии 2.0
<script src="http://api-maps.yandex.ru/2.0/?load=package.map,
package.controls&lang=ru-RU" type="text/javascript"></script>
package.map
Layer
LayerCollection
Map
MapEvent
MapType
Monitor
…
package.controls
control.Button
control.Group
control.ListBox
control.ListBoxItem
control.MapTools
control.RollupButton
…
53
Подключение API 2.0
<script src="http://api-
maps.yandex.ru/2.0/?load=package.full&lang=ru-RU"
type="text/javascript"></script>
package.full
package.map
package.controls
package.search
package.geoObjects
package.clusters
package.overlays
…
54
Подключение API 2.1
<script src="http://api-maps.yandex.ru/2.1-dev/?lang=ru-RU"
type="text/javascript"></script>
package.full
Map
GeoObject
Clusterer
Layer
GeoObjectCollection
control.Button
…
55
Сокращение размера package.full
332
190
0 50 100 150 200 250 300 350
Версия 2.0
Версия 2.1
Размер package.full (кб)
56
Дозагрузка компонентов
57
Подключение API 2.1
Placemark
Clusterer
Map
<script src="http://api-maps.yandex.ru/2.1-
dev/?load=Map,Placemark,Clusterer&lang=ru-RU"
type="text/javascript"></script>
58
Интерфейс
асинхронных
операций
59
Асинхронный интерфейс в 2.0
myMap.setBounds([[60,-40], [20,60]], {
checkZoomRange: true,
callback: function(err) {
if (err) {
// Не удалось показать заданный регион
// ...
}
}
});
60
Асинхронный интерфейс в 2.0
var promise = ymaps.route([ 'Королев', 'Химки']);
promise.then(
function (route) {
map.geoObjects.add(route);
}
);
61
Объект-обещание (Promise)
Source
Listener 1
Listener 2
Listener 3
Promise
62
Интерфейс Promise
promise.fulfill(value); // resolve
promise.reject(error);
promise.then(
function onFulfill (value) { … },
function onReject(error) { … }
);
63
Асинхронный интерфейс в 2.1
• Vow;
o https://github.com/dfilatov/vow
• Реализует Promises/A+;
o http://dom.spec.whatwg.org/#promises
64
Основные особенности Vow
• Асинхронное получение значения;
• Deferred object.
65
Асинхронное получение значения
var promise = load(..);
promise.then(
function (route) {
console.log('2');
}
);
console.log('1');
66
Синхронный Promise в jQuery
function animate(duration) {
$('div').animate({opacite: 0}, duration).promise()
.then(function () {
console.log('2');
});
console.log('1');
}
animate(0); // 2 1
console.log('--');
animate(1); // 1 2
Пример http://bit.ly/1mUwrKi
67
Объект-обещание (Promise)
Source
Listener 1
Listener 2
Listener 3
Promise
68
Deferred Object
Source
Listener 1
Listener 2
Listener 3
Promise
Deferred
Object
69
Методы Vow
Promise API
• fulfill
• reject
• notify
• isFulfilled
• isRejected
• isResolved
• valueOf
• then
• fail
• always
• progress
• spread
• done
• delay
• timeout
• sync
Vow API
• isPromise
• when
• fail
• always
• progress
• spread
• done
• isFulfilled
• isRejected
• isResolved
• fulfill
• reject
• resolve
• invoke
• all
• allResolved
• any
• delay
• timeout
Пример http://bit.ly/1jldyQ3
70
Использование API
на мобильных
устройствах
71
Маппинг событий
Touch Events
Pointer Events
mousedown
mouseup
mousemove
click
dbclick
…
touchstart
touchend
touchmove
…
pointerdown
pointerup
pointermove
…
72
geoObject.events
.add(‘click’, callback);
map.events
.add(‘mouseenter’, callback);
73
События multitouch*
Для обработки множественных
прикосновений
• multitouchstart
• multitouchmove
• multitouchend
74
Мультитач поведение
75
ymaps.domEvent.manager
.add(
htmlElement,
[‘click’, ‘mouseenter’],
callback
);
Пример http://bit.ly/1eq14lT
76
ymaps.domEvent.manager
.add(
htmlElement,
'multitouchstart',
function (event) {
// ...
event.callMethod('preventDefault');
}
);
77
Гибридные устройства
78
Тайлы для устройств с повышенной плотностью
пикселей
devicePixelRatio = 1
devicePixelRatio = 2
79
<meta name="viewport"
content="width=device-width" />
80
Использование API в PhoneGap
• Нельзя создавать локальную копию API
Яндекс.Карт
• Нужно передавать HTTP заголовок Referer
вида
«http://идентификатор_приложения_в_сторе.y
mapapp»
81
82
Ссылки
Официальная группа в Facebook
https://www.facebook.com/ymapsapi
Официальная группа в ВК
http://vk.com/ymapsapi
Клуб разработчиков API Яндекс.Карт
http://clubs.ya.ru/mapsapi/
Документация версии 2.1
http://api.yandex.ru/maps/doc/jsapi/beta/ref/concepts/About.xml
83
Спасибо за внимание!
84
Всеволод Шмыров
Разработчик интерфейсов
vsesh@yandex-team.ru
https://www.facebook.com/vsevolod.shmyrov
http://vsevolod-shmyirov.moikrug.ru/

Contenu connexe

Tendances

Web осень 2013 лекция 8
Web осень 2013 лекция 8Web осень 2013 лекция 8
Web осень 2013 лекция 8
Technopark
 
Web осень 2013 лекция 7
Web осень 2013 лекция 7Web осень 2013 лекция 7
Web осень 2013 лекция 7
Technopark
 

Tendances (7)

Moxy. Как правильно пользоваться? / Юрий Шмаков (Arello Mobile)
Moxy. Как правильно пользоваться? / Юрий Шмаков (Arello Mobile)Moxy. Как правильно пользоваться? / Юрий Шмаков (Arello Mobile)
Moxy. Как правильно пользоваться? / Юрий Шмаков (Arello Mobile)
 
Конвейерное производство приложений
Конвейерное производство приложенийКонвейерное производство приложений
Конвейерное производство приложений
 
Работа с геоданными (Lecture 18 – geolocation)
Работа с геоданными (Lecture 18 – geolocation)Работа с геоданными (Lecture 18 – geolocation)
Работа с геоданными (Lecture 18 – geolocation)
 
Web осень 2013 лекция 8
Web осень 2013 лекция 8Web осень 2013 лекция 8
Web осень 2013 лекция 8
 
iOS-05_1-UIKit
iOS-05_1-UIKitiOS-05_1-UIKit
iOS-05_1-UIKit
 
Web осень 2013 лекция 7
Web осень 2013 лекция 7Web осень 2013 лекция 7
Web осень 2013 лекция 7
 
course js day 4
course js day 4course js day 4
course js day 4
 

Similaire à Использование API Яндекс.Карт

"Адаптивный дизайн интерфейса JS API Яндекс.Карт и особенности его реализации...
"Адаптивный дизайн интерфейса JS API Яндекс.Карт и особенности его реализации..."Адаптивный дизайн интерфейса JS API Яндекс.Карт и особенности его реализации...
"Адаптивный дизайн интерфейса JS API Яндекс.Карт и особенности его реализации...
Yandex
 
Mobile automation uamobile
Mobile automation uamobileMobile automation uamobile
Mobile automation uamobile
UA Mobile
 
DUMP-2013 Frontend - Возможности последних WEB-стандартов в API Яндекс.Карт -...
DUMP-2013 Frontend - Возможности последних WEB-стандартов в API Яндекс.Карт -...DUMP-2013 Frontend - Возможности последних WEB-стандартов в API Яндекс.Карт -...
DUMP-2013 Frontend - Возможности последних WEB-стандартов в API Яндекс.Карт -...
it-people
 
Chaos Constructions HackQuest 2010 Full Disclosure (мастер-класс)
Chaos Constructions HackQuest 2010 Full Disclosure (мастер-класс)Chaos Constructions HackQuest 2010 Full Disclosure (мастер-класс)
Chaos Constructions HackQuest 2010 Full Disclosure (мастер-класс)
Dmitry Evteev
 

Similaire à Использование API Яндекс.Карт (20)

Всеволод Шмыров, Яндекс
Всеволод Шмыров, ЯндексВсеволод Шмыров, Яндекс
Всеволод Шмыров, Яндекс
 
Михаил Давыдов "Масштабируемые JavaScript-приложения"
Михаил Давыдов "Масштабируемые JavaScript-приложения"Михаил Давыдов "Масштабируемые JavaScript-приложения"
Михаил Давыдов "Масштабируемые JavaScript-приложения"
 
Yamaps
YamapsYamaps
Yamaps
 
The Best Portlet
The Best PortletThe Best Portlet
The Best Portlet
 
Фёдор Голубев "API Яндекс.Карт"
Фёдор Голубев "API Яндекс.Карт"Фёдор Голубев "API Яндекс.Карт"
Фёдор Голубев "API Яндекс.Карт"
 
Александр Тармолов "API Яндекс.Карт"
Александр Тармолов "API Яндекс.Карт"Александр Тармолов "API Яндекс.Карт"
Александр Тармолов "API Яндекс.Карт"
 
"Адаптивный дизайн интерфейса JS API Яндекс.Карт и особенности его реализации...
"Адаптивный дизайн интерфейса JS API Яндекс.Карт и особенности его реализации..."Адаптивный дизайн интерфейса JS API Яндекс.Карт и особенности его реализации...
"Адаптивный дизайн интерфейса JS API Яндекс.Карт и особенности его реализации...
 
Михаил Давыдов "Масштабируемые JavaScript-приложения"
Михаил Давыдов "Масштабируемые JavaScript-приложения"Михаил Давыдов "Масштабируемые JavaScript-приложения"
Михаил Давыдов "Масштабируемые JavaScript-приложения"
 
iOS and Android Mobile Test Automation
iOS and Android Mobile Test AutomationiOS and Android Mobile Test Automation
iOS and Android Mobile Test Automation
 
Mobile automation uamobile
Mobile automation uamobileMobile automation uamobile
Mobile automation uamobile
 
DUMP-2013 Frontend - Возможности последних WEB-стандартов в API Яндекс.Карт -...
DUMP-2013 Frontend - Возможности последних WEB-стандартов в API Яндекс.Карт -...DUMP-2013 Frontend - Возможности последних WEB-стандартов в API Яндекс.Карт -...
DUMP-2013 Frontend - Возможности последних WEB-стандартов в API Яндекс.Карт -...
 
Инструментируй это
Инструментируй этоИнструментируй это
Инструментируй это
 
Mobile Fest#spb 2012
Mobile Fest#spb 2012Mobile Fest#spb 2012
Mobile Fest#spb 2012
 
Особенности разработки API / Всеволод Шмыров (Яндекс)
Особенности разработки API / Всеволод Шмыров (Яндекс)Особенности разработки API / Всеволод Шмыров (Яндекс)
Особенности разработки API / Всеволод Шмыров (Яндекс)
 
Автоматизация UI тестирования под Windows и Windows Phone
Автоматизация UI тестирования под Windows и Windows PhoneАвтоматизация UI тестирования под Windows и Windows Phone
Автоматизация UI тестирования под Windows и Windows Phone
 
Chaos Constructions HackQuest 2010 Full Disclosure (мастер-класс)
Chaos Constructions HackQuest 2010 Full Disclosure (мастер-класс)Chaos Constructions HackQuest 2010 Full Disclosure (мастер-класс)
Chaos Constructions HackQuest 2010 Full Disclosure (мастер-класс)
 
Aspect Oriented Approach
Aspect Oriented ApproachAspect Oriented Approach
Aspect Oriented Approach
 
Node.js введение в технологию, КПИ #ITmeetingKPI
Node.js введение в технологию, КПИ  #ITmeetingKPINode.js введение в технологию, КПИ  #ITmeetingKPI
Node.js введение в технологию, КПИ #ITmeetingKPI
 
#3 "Webpack и Vue.JS: Создание больших приложений и их расширение" Кирилл Кай...
#3 "Webpack и Vue.JS: Создание больших приложений и их расширение" Кирилл Кай...#3 "Webpack и Vue.JS: Создание больших приложений и их расширение" Кирилл Кай...
#3 "Webpack и Vue.JS: Создание больших приложений и их расширение" Кирилл Кай...
 
Moscow js 26 webpack
Moscow js 26   webpackMoscow js 26   webpack
Moscow js 26 webpack
 

Plus de FDConf

Антон Киршанов - «Квант изменения. Реактивные реакции на React.
Антон Киршанов - «Квант изменения. Реактивные реакции на React.Антон Киршанов - «Квант изменения. Реактивные реакции на React.
Антон Киршанов - «Квант изменения. Реактивные реакции на React.
FDConf
 
В погоне за производительностью
В погоне за производительностьюВ погоне за производительностью
В погоне за производительностью
FDConf
 
Redux. From twitter hype to production
Redux. From twitter hype to productionRedux. From twitter hype to production
Redux. From twitter hype to production
FDConf
 

Plus de FDConf (20)

Антон Киршанов - «Квант изменения. Реактивные реакции на React.
Антон Киршанов - «Квант изменения. Реактивные реакции на React.Антон Киршанов - «Квант изменения. Реактивные реакции на React.
Антон Киршанов - «Квант изменения. Реактивные реакции на React.
 
Игорь Еростенко - Создаем виртуальный тур
Игорь Еростенко - Создаем виртуальный турИгорь Еростенко - Создаем виртуальный тур
Игорь Еростенко - Создаем виртуальный тур
 
Илья Климов - Reason: маргиналы против хайпа
Илья Климов - Reason: маргиналы против хайпаИлья Климов - Reason: маргиналы против хайпа
Илья Климов - Reason: маргиналы против хайпа
 
Максим Щепелин - Доставляя веб-контент в игру
Максим Щепелин - Доставляя веб-контент в игруМаксим Щепелин - Доставляя веб-контент в игру
Максим Щепелин - Доставляя веб-контент в игру
 
Александр Черноокий - Как правило "победитель получает все" работает и не раб...
Александр Черноокий - Как правило "победитель получает все" работает и не раб...Александр Черноокий - Как правило "победитель получает все" работает и не раб...
Александр Черноокий - Как правило "победитель получает все" работает и не раб...
 
Михаил Волчек - Что такое Цифровая мастерская?
Михаил Волчек - Что такое Цифровая мастерская?Михаил Волчек - Что такое Цифровая мастерская?
Михаил Волчек - Что такое Цифровая мастерская?
 
Radoslav Stankov - Handling GraphQL with React and Apollo
Radoslav Stankov - Handling GraphQL with React and ApolloRadoslav Stankov - Handling GraphQL with React and Apollo
Radoslav Stankov - Handling GraphQL with React and Apollo
 
Виктор Русакович - Выборы, выборы, все фреймворки… приторны
Виктор Русакович - Выборы, выборы, все фреймворки… приторныВиктор Русакович - Выборы, выборы, все фреймворки… приторны
Виктор Русакович - Выборы, выборы, все фреймворки… приторны
 
Slobodan Stojanovic - 8 1/2 things about serverless
Slobodan Stojanovic - 8 1/2 things about serverless Slobodan Stojanovic - 8 1/2 things about serverless
Slobodan Stojanovic - 8 1/2 things about serverless
 
Тимофей Лавренюк - Почему мне зашел PWA?
Тимофей Лавренюк - Почему мне зашел PWA?Тимофей Лавренюк - Почему мне зашел PWA?
Тимофей Лавренюк - Почему мне зашел PWA?
 
В погоне за производительностью
В погоне за производительностьюВ погоне за производительностью
В погоне за производительностью
 
Если у вас нету тестов...
Если у вас нету тестов...Если у вас нету тестов...
Если у вас нету тестов...
 
Migrate your React.js application from (m)Observable to Redux
Migrate your React.js application from (m)Observable to ReduxMigrate your React.js application from (m)Observable to Redux
Migrate your React.js application from (m)Observable to Redux
 
Dart: питание и сила для вашего проекта
Dart: питание и сила для вашего проектаDart: питание и сила для вашего проекта
Dart: питание и сила для вашего проекта
 
Scalable Angular 2 Application Architecture
Scalable Angular 2 Application ArchitectureScalable Angular 2 Application Architecture
Scalable Angular 2 Application Architecture
 
JavaScript: прошлое, настоящее и будущее.
JavaScript: прошлое, настоящее и будущее.JavaScript: прошлое, настоящее и будущее.
JavaScript: прошлое, настоящее и будущее.
 
CSSO — сжимаем CSS
CSSO — сжимаем CSSCSSO — сжимаем CSS
CSSO — сжимаем CSS
 
Redux. From twitter hype to production
Redux. From twitter hype to productionRedux. From twitter hype to production
Redux. From twitter hype to production
 
Будь первым
Будь первымБудь первым
Будь первым
 
"Service Worker: Let Your Web App Feel Like a Native "
"Service Worker: Let Your Web App Feel Like a Native ""Service Worker: Let Your Web App Feel Like a Native "
"Service Worker: Let Your Web App Feel Like a Native "
 

Использование API Яндекс.Карт