SlideShare a Scribd company logo
DUMP-2013 Frontend - Возможности последних WEB-стандартов в API Яндекс.Карт - Шмыров Всеволод
http://api.yandex.ru/maps/
<script type="text/javascript"
src="//api-maps.yandex.ru/2.0/?load=package.map&lang=ru-RU">
</script>
Возможности работы с
графикой
•
4
•
•
•
•
•
http://code.google.com/p/explorercanvas/
5
<canvas id="example" width="500px" height="500px;"></canvas>
var canvasElement = document.getElementById("example"),
canvas2DContext = canvasElement.getContext("2d");
...
// Отображение черного прямоугольника.
canvas2DContext.fillStyle = "#000000";
canvas2DContext.fillRect(0, 0, canvasElement.width,
canvasElement.height);
...
// Вывод изображения
var img = new Image();
img.onload = function () {
canvas2DContext.drawImage(img,10,10);
};
img.src = "http://....png";
6
•
•
•
•
•
•
7
<body>
...
<svg xmlns="http://www.w3.org/2000/svg" version="1.1"
height="190">
<polygon id="poly" points="100,10 40,180 190,60
10,60 160,180"
style="fill:lime;stroke:purple;stroke-width:5;">
</svg>
var polygonElement = document.getElementById('poly');
polygonElement.setAttribute('style',
'fill:#000000;stroke:purple;stroke-width:1;');
8
var coords = [[57.72495,63.546779], [54.740667,70.050685],
[50.407949,66.798732], [53.291545,61.349513], [53.133264,52.999904]];
var polygon = new ymaps.Polygon([coords], {}, {
fillOpacity: 0.2,
strokeColor: '#7CE823',
fillColor: '#1C7BC9',
strokeWidth: 4,
draggable: true,
geodesic: true
});
9
• Canvas > SVG
•
• VML
•
• HTML-элементы
•
•
11
Способы отображения карты
•
•
•
•
13
•
•
•
•
•
•
•
•
14
<ymaps style="position: absolute; left: -162px;
top: -243px;" />
:
<ymaps style="transform: translate(-162px, -243px);" />
<ymaps style="transform: translate3d(-162px, -243px);" />
15
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
17
CSS анимация
• CSS Animations
• CSS Transitions
18
div {
transition: transform 1s ease-in-out;
}
.anim {
transform: translate(600px, 0px);
}
http://video.yandex.ru/users/v-shmyroff/view/4/
19
http://bit.ly/balloon_accordion
clusterer = new ymaps.Clusterer({
clusterBalloonContentBodyLayout:
"cluster#balloonAccordionContent"
});
http://video.yandex.ru/users/v-shmyroff/view/2/
20
div {
-webkit-transition: -webkit-transform 1s ease-in-out;
-moz-transition: -moz-transform 1s ease-in-out;
-ms-transition: -ms-transform 1s ease-in-out;
-o-transition: -o-transform 1s ease-in-out;
transition: transform 1s ease-in-out;
}
.anim {
-webkit-transform: translate(600px, 0px);
-moz-transform: translate(600px, 0px);
-ms-transform: translate(600px, 0px);
-o-transform: translate(600px, 0px);
transform: translate(600px, 0px);
}
21
Управление префиксами браузеров
• LESS
• SASS
• Stylus
• -prefix-free
22
•
•
•
•
23
Отмена анимации
http://video.yandex.ru/users/v-shmyroff/view/1/
24
http://bit.ly/jsFiddle_vsesh
http://video.yandex.ru/users/v-shmyroff/view/3/
25
.arrow {
background: linear-gradient(315deg, #002400 0%, #35A800 100%);
opacity: 1;
transform: translate(-30px, -65px) rotate(45deg);
border-radius: 60px 60px 0px;
animation-name: arrow_animation;
animation-duration: 1s;
}
@keyframes arrow_animation
{
0% { transform: translate(-30px, -100px) rotate(45deg); }
60% { ... }
100% { transform: translate(-30px, -65px) rotate(45deg); }
}
http://clck.ru/8drfh
var layoutHTML = '<div class="arrow"></div>',
layout = ymaps.templateLayoutFactory.createClass(layoutHTML),
placemark = new ymaps.Placemark(coords, {}, { iconLayout: layout });
Персонализация
скроллбара в WebKit
•
27
.someClass ::-webkit-scrollbar { ... }
.someClass ::-webkit-scrollbar-track { ... }
.someClass ::-webkit-scrollbar-thumb { ... }
.someClass ::-webkit-scrollbar-thumb:hover { ... }
...
http://bit.ly/balloon_accordion
•
29
navigator.geolocation.getCurrentPosition(onSuccess, onError);
function onSuccess(position) {
var coords = [position.coords.latitude, position.coords.longitude];
var placemark = new ymaps.Placemark(coords);
map.geoObjects.add(placemark);
map.setCenter(coords);
}
function onError(positionError) {
console.log(positionError.message);
}
http://bit.ly/geolocationAPI
• Получение местоположение пользователя
• Все методы асинхронные
• Поддержка современными браузерами (IE9+,
Opera10.6+)
•
31
32
// Событие "mousedown" будет работать на всех устройствах.
ymaps.domEvent.manager.add(
htmlElement,
'mousedown',
callback
);
// Специальные multitouch* события.
ymaps.domEvent.manager.add(
htmlElement,
['multitouchstart', 'multitouchmove', 'multitouchend'],
callback
);
33
•
•
•
•
34
•
•
•
•
36
<script src="//api-maps.yandex.ru/2.0/?lang=ru-RU&ns=ym"
type="text/javascript">
</script>
<script type="text/javascript">
...
ym.load('package.map', function() {
...
});
...
</script>
<script type="text/javascript"
src="//api-maps.yandex.ru/2.0/?load=package.map&lang=ru-RU">
</script>
37
•
•
•
•
// запись
document.cookie = key + '=' + escape(value);
// получение
var cookieData = document.cookie.split('; ');
for(var i = 0, iMax = cookieData.length; i < iMax; i++)
{
if(cookieData[i].substring(0, name.length) == name)
return unescape(cookieData[i].substring(name.length + 1));
}
38
•
•
•
•
•
•
•
39
sharedObject = SharedObject.getLocal("savedData");
ExternalInterface.addCallback("setData", function(data:Object):void
{
// Получение данных из JS
sharedObject.data[key] = data;
sharedObject.flush();
});
// Вызов функции в JS
ExternalInterface.call("initStorage", sharedObject.data);
function initStorage(storageData) {
// Получение данных из AS
}
// Вызов функции в AS
flashElement.setData({ key: value });
40
•
•
•
•
•
•
41
var data1 = window.localStorage['key1'];
data1 = data1 ? data1.split('|') : [2, 2];
data1[0] = "1";
try {
window.localStorage['key1'] = data1.join('|');
}
catch (e) {
...
}
42
var data1 = window.localStorage.getItem('key1');
data1 = data1 ? data1.split('|') : [2, 2];
data1[0] = "1";
try {
window.localStorage.setItem('key1', data1.join('|'));
}
catch (e) {
...
}
43
•
•
•
•
•
•
44
Возможность работать с БД
•
•
•
•
45
var db = openDatabase('test', '1.0',
'comment', 1024 * 1024);
if(db) {
db.transaction(function (transaction) {
transaction.executeSql('CREATE TABLE IF NOT
EXISTS ... ');
});
...
db.transaction(function (transaction) {
transaction.executeSql('SELECT * FROM ... ');
});
}
46
var indexedDB = window.indexedDB || window.mozIndexedDB ||
window.webkitIndexedDB,
request = indexedDB.open(indexedDBName);
request.onsuccess = function (event) {
var db = event.result;
if(db.version != '1.0) {
// Создание базы данных.
var setVersionRequest = db.setVersion("1.0");
setVersionRequest.onsuccess = function () { ... };
setVersionRequest.onerror = function () { ... };
} else {
...
}
db.close();
}
request.onerror = function (event) { ... }
47
•
•
•
•
•
•
•
•
•
•
48
DUMP-2013 Frontend - Возможности последних WEB-стандартов в API Яндекс.Карт - Шмыров Всеволод

More Related Content

PDF
"Адаптивный дизайн интерфейса JS API Яндекс.Карт и особенности его реализации...
PDF
Сергей Константинов — Простая обработка групп геообъектов на карте
PDF
"Рекомендации по проектированию API" — Марина Степанова, Яндекс
PDF
Максим Хромцов "Yandex MapKit для Android OS в примерах"
PDF
Роман Бусыгин "Yandex Map Kit для iOS в примерах"
PDF
Что API Карт забыл на сервере — Антон Корзунов
PDF
"Dependency Injection. JavaScript.", Сергей Камардин, MoscowJS 15
PPTX
ObjectManager, или как работать с большим количеством объектов на карте, Мари...
"Адаптивный дизайн интерфейса JS API Яндекс.Карт и особенности его реализации...
Сергей Константинов — Простая обработка групп геообъектов на карте
"Рекомендации по проектированию API" — Марина Степанова, Яндекс
Максим Хромцов "Yandex MapKit для Android OS в примерах"
Роман Бусыгин "Yandex Map Kit для iOS в примерах"
Что API Карт забыл на сервере — Антон Корзунов
"Dependency Injection. JavaScript.", Сергей Камардин, MoscowJS 15
ObjectManager, или как работать с большим количеством объектов на карте, Мари...

What's hot (20)

PPT
Yandex Map Kit для Android OS - Максим Хромцов
PDF
"CommonJS для браузера", Антон Шувалов, MoscowJS 15
PPTX
Дуров Р. - Cocos2d
PPTX
I tmozg js_school
PDF
iOS-05_2-UIKit
PPSX
создание HTML игр на элементе canvas
PPT
Javascript
PPT
Подробная презентация JavaScript 6 в 1
PPT
Javascript
PDF
Интуит. Разработка приложений для iOS. Лекция 3. Views
PDF
Интуит. Разработка приложений для iOS. Лекция 2. Objective-C
PDF
WordPress Cron API
PDF
Devcamp nodejs-2010
PDF
Promise me an Image... Антон Корзунов, Яндекс, MoscowJs 33
PDF
Роман Ермолов - Отладка приложений под iOS
PDF
Школа-Студия разработки приложений для iOS. 3 лекция. Интерфейсы, прололжение
PDF
Web internship java script
PPT
Memory managment in i os (1)
PDF
Фундаментальные основы разработки под iOS. Павел Тайкало
PDF
Асинхронный JavaScript
Yandex Map Kit для Android OS - Максим Хромцов
"CommonJS для браузера", Антон Шувалов, MoscowJS 15
Дуров Р. - Cocos2d
I tmozg js_school
iOS-05_2-UIKit
создание HTML игр на элементе canvas
Javascript
Подробная презентация JavaScript 6 в 1
Javascript
Интуит. Разработка приложений для iOS. Лекция 3. Views
Интуит. Разработка приложений для iOS. Лекция 2. Objective-C
WordPress Cron API
Devcamp nodejs-2010
Promise me an Image... Антон Корзунов, Яндекс, MoscowJs 33
Роман Ермолов - Отладка приложений под iOS
Школа-Студия разработки приложений для iOS. 3 лекция. Интерфейсы, прололжение
Web internship java script
Memory managment in i os (1)
Фундаментальные основы разработки под iOS. Павел Тайкало
Асинхронный JavaScript
Ad

Similar to DUMP-2013 Frontend - Возможности последних WEB-стандартов в API Яндекс.Карт - Шмыров Всеволод (20)

PPT
Всеволод Шмыров, Яндекс
PDF
Александр Тармолов "API Яндекс.Карт"
PDF
"Жизнь без интернета" Кувалдин Артём, Яндекс
PPTX
Node.js введение в технологию, КПИ #ITmeetingKPI
PDF
Фёдор Голубев "API Яндекс.Карт"
PDF
Making Scalable JavaScript Application
PDF
WebCamp: Developer Day: Parse'им бэкенд - Аким Халилов
PDF
FrontTalks: Илья Пухальский (EPAM Systems), «Веб-приложения будущего»
PPT
Take more from Jquery
PPTX
API Яндекс.Карт. Мастер-класс
PDF
Introduction in Node.js (in russian)
PDF
JavaScript. Уровень 3г. HTML5 API
PPTX
iOS and Android Mobile Test Automation
PPT
Кроссбраузерные решения в рекламной сети Яндекса
PDF
Сергей Перескоков "JS API Яндекс.Карт 2.0: что нового и как это работает"
PDF
Mobile automation uamobile
PDF
ES2015+: давно пора!
PDF
Автоматизация UI тестирования под Windows и Windows Phone
PPT
Web осень 2012 лекция 4
PDF
Превышаем скоросные лимиты с Angular 2
Всеволод Шмыров, Яндекс
Александр Тармолов "API Яндекс.Карт"
"Жизнь без интернета" Кувалдин Артём, Яндекс
Node.js введение в технологию, КПИ #ITmeetingKPI
Фёдор Голубев "API Яндекс.Карт"
Making Scalable JavaScript Application
WebCamp: Developer Day: Parse'им бэкенд - Аким Халилов
FrontTalks: Илья Пухальский (EPAM Systems), «Веб-приложения будущего»
Take more from Jquery
API Яндекс.Карт. Мастер-класс
Introduction in Node.js (in russian)
JavaScript. Уровень 3г. HTML5 API
iOS and Android Mobile Test Automation
Кроссбраузерные решения в рекламной сети Яндекса
Сергей Перескоков "JS API Яндекс.Карт 2.0: что нового и как это работает"
Mobile automation uamobile
ES2015+: давно пора!
Автоматизация UI тестирования под Windows и Windows Phone
Web осень 2012 лекция 4
Превышаем скоросные лимиты с Angular 2
Ad

More from it-people (20)

PDF
«Про аналитику и серебряные пули» Александр Подсобляев, Rambler&Co
PDF
«Scrapy internals» Александр Сибиряков, Scrapinghub
PDF
«Отладка в Python 3.6: Быстрее, Выше, Сильнее» Елизавета Шашкова, JetBrains
PDF
«Gevent — быть или не быть?» Александр Мокров, Positive Technologies
PDF
«Ещё один Поиск Яндекса» Александр Кошелев, Яндекс
PDF
«How I Learned to Stop Worrying and Love the BFG: нагрузочное тестирование со...
PDF
«Write once run anywhere — почём опиум для народа?» Игорь Новиков, Scalr
PDF
«Gensim — тематическое моделирование для людей» Иван Меньших, Лев Константино...
PDF
«Тотальный контроль производительности» Михаил Юматов, ЦИАН
PDF
«Детские болезни live-чата» Ольга Сентемова, Тинькофф Банк
PDF
«Микросервисы наносят ответный удар!» Олег Чуркин, Rambler&Co
PDF
«Память и Python. Что надо знать для счастья?» Алексей Кузьмин, ЦНС
PDF
«Что такое serverless-архитектура и как с ней жить?» Николай Марков, Aligned ...
PDF
«Python на острие бритвы: PyPy project» Александр Кошкин, Positive Technologies
PDF
«PyWat. А хорошо ли вы знаете Python?» Александр Швец, Marilyn System
PDF
«(Без)опасный Python», Иван Цыганов, Positive Technologies
PDF
«Python of Things», Кирилл Борисов, Яндекс
PDF
«Как сделать так, чтобы тесты на Swift не причиняли боль» Сычев Александр, Ra...
PDF
«Клиенту и серверу нужно поговорить» Прокопов Никита, Cognician
PDF
«Кошелек или деньги: сложный выбор между памятью и процессором» Алексеенко Иг...
«Про аналитику и серебряные пули» Александр Подсобляев, Rambler&Co
«Scrapy internals» Александр Сибиряков, Scrapinghub
«Отладка в Python 3.6: Быстрее, Выше, Сильнее» Елизавета Шашкова, JetBrains
«Gevent — быть или не быть?» Александр Мокров, Positive Technologies
«Ещё один Поиск Яндекса» Александр Кошелев, Яндекс
«How I Learned to Stop Worrying and Love the BFG: нагрузочное тестирование со...
«Write once run anywhere — почём опиум для народа?» Игорь Новиков, Scalr
«Gensim — тематическое моделирование для людей» Иван Меньших, Лев Константино...
«Тотальный контроль производительности» Михаил Юматов, ЦИАН
«Детские болезни live-чата» Ольга Сентемова, Тинькофф Банк
«Микросервисы наносят ответный удар!» Олег Чуркин, Rambler&Co
«Память и Python. Что надо знать для счастья?» Алексей Кузьмин, ЦНС
«Что такое serverless-архитектура и как с ней жить?» Николай Марков, Aligned ...
«Python на острие бритвы: PyPy project» Александр Кошкин, Positive Technologies
«PyWat. А хорошо ли вы знаете Python?» Александр Швец, Marilyn System
«(Без)опасный Python», Иван Цыганов, Positive Technologies
«Python of Things», Кирилл Борисов, Яндекс
«Как сделать так, чтобы тесты на Swift не причиняли боль» Сычев Александр, Ra...
«Клиенту и серверу нужно поговорить» Прокопов Никита, Cognician
«Кошелек или деньги: сложный выбор между памятью и процессором» Алексеенко Иг...

DUMP-2013 Frontend - Возможности последних WEB-стандартов в API Яндекс.Карт - Шмыров Всеволод