 |
|
Головна » 2011 » Березень » 13 » Як наші сусіди подружилися з Яндекс.Картах
13:11 Як наші сусіди подружилися з Яндекс.Картах |
В якій країні ми живемо? Правильно - у Росії. Так навіщо ж прив'язувати себе до закордонним картах від Google? Ми живемо в Росії, а для неї є свої карти. Рідні. Це Карти від Яндекса.
Тепер еСоседі дружать з Яндекс.Картами. Зайшовши на сайт, можна побачити свій будинок або дачу саме на них, і при бажанні порівняти з картами Google.
Перехід на Яндекс.Карти був зроблений не тільки з патріотичних міркувань:) У ряді випадків покриття Гугла по Росії далеко від ідеалу. При цьому не можна сказати, що Яндекс.Карти однозначно краще. Зате на них іноді видно те, що відсутній на картах Google. Ось цікавий приклад майже дзеркального відображення якісних ділянок:

Про те, як живитися Яндексом на своєму сайті, якщо у Вас вже оселився Гугл, читаємо далі.
Відмінності між Yandex і Google 1. GLatLng і YMaps.GeoPoint використовуються в Г і Я відповідно. Перехід з однієї системи на іншу простий: function G2YA (a) {return new YMaps.GeoPoint (a.lng (), a.lat ())} function YA2G (a) {return new GLatLng (a.getLat (), a.getLng ());}
2. Яндекс використовує інший стандарт проекції, трохи вже epsg: 3395 (подробиці)
3. Деякі функції просто по-іншому називаються, деякі трохи по-іншому працюють.
Як зв'язати Яндекс і Гугл карти? Варіант - використовувати проксі (опис проксі в клубі) Суть проста - Обгортаємо і гугл і яндекс інтерфейсом. У нашому випадку було трохи простіше - у нас звернення до координат централізоване, SET був в одному місці, GET ми все ж пустили через проксі. Вийшло щось схоже на:
map.getPane = function (a) {return 0;} map.checkResize = function () {this.redraw (true);} map.disableScrollWheelZoom = function () {this.disableScrollZoom ();} map.enableScrollWheelZoom = function () {this.enableScrollZoom ();} map.fromLatLngToDivPixel = function (a) {YA = G2YA (a); return this.converter.coordinatesToMapPixels (YA);} map.fromContainerPixelToLatLng = function (a) {return YA2G (geo_map.converter.localPixelsToCoordinates (GP2YA (a )));} map . getMapCenter = function () {return YA2G (this.getCenter ());} map.setMapType = function (a) { if (a == G_NORMAL_MAP) this.setType ( YMaps.MapType.MAP); if (a == G_HYBRID_MAP) this.setType (YMaps.MapType.HYBRID); if (a == G_PHYSICAL_MAP) this.setType (YMaps.MapType.SATELLITE) ; }
map.getCurrentMapType = function () { a = this.getType (); if (a == YMaps.MapType.MAP) return G_NORMAL_MAP; if (a == YMaps.MapType.HYBRID) return G_HYBRID_MAP; if (a == YMaps.MapType.SATELLITE) return G_PHYSICAL_MAP; }
YMaps.GeoBounds . prototype.getSouthWest = function () {return YA2G (this.getLeftBottom ());} YMaps.GeoBounds.prototype.getNorthEast = function () {return YA2G (this.getRightTop ());}
Евент зсуву карти в Гуглі задається як GEvent.addListener (geo_map, "moveend", map_moveend_event);
У Яндексі по-іншому - доводиться вішати на дві події:
YMaps.Events.observe (map, map.Events.Update, map_moveend_event); YMaps.Events.observe (map, map.Events.MoveEnd, map_moveend_event);
Маркери та «балун» еСоседі не використовують, але використовують оверлеї, які дозволяють відобразити на карті все, що завгодно. Якщо Вам цікаво дізнатися, як це робиться - kashey може описати докладніше, але вже в іншому топіку.
Як подружити оверлеї Г і Я? Знову ж все дуже просто.
GOverlay.prototype.onAddToMap = function (map, to) { this.initialize (map); to.appendChild (this.div_); this . onMapUpdate (map); return obj; }
GOverlay.prototype.onRemoveFromMap = function (map) { return this.remove (); }
GOverlay.prototype.onMapUpdate = function (map) { this.redraw (true); }
У функції onAddToMap створюється дів (_div) в який можна покласти будь-які дані. У випадку з Г картами його додавання на карту проводитися у функції initialize командою if (GetMap (). GetPane (defmappane)) GetMap (). GetPane (defmappane). AppendChild (div) ;
у випадку Я карт, дана команда просто не спрацює. У принципі, схожим чином можна і пропачілі GMarker, і він «просто запрацює», або написати обернену функцію. Тоді красиві Яндекс.Балууни зароблять на Г картах ...
Нам вистачило описаних патчів, щоб запустити новий варіант карт. Можливо щось ми не врахували, але за тиждень тестування глюків не вилізло.
|
Переглядів: 562 |
Додав: w1zard
| Рейтинг: 0.0/0 |
|
|
Категорії розділу
Події
[3]
Тільки екстренні та надзвичайні новини
|
Світові події
[4]
Останні події, що трапились у світі.
|
Українські події
[8]
Події, які трапились в межах нашої державии, чи стосуються України
|
Бізнес
[3]
Новини та події із бізнес-світу
|
Наука і техніка
[3]
Новини, що трапились у світі науки або технічних досліджень
|
Спорт
[1]
Спортивні новини та досягнення
|
Культура та мистецтво
[2]
Новини культурного та художнього світу
|
Статистика
Онлайн всього: 1 Гостей: 1 Користувачів: 0
|