А у нас совсем весело. Мало того, что г. Тольятти подписан Самарой, так еще Автозаводским районом назвали Центральный район. И что-то не нашел я как посмотреть спутниковый снимок.
На карту лучше вообще не смотреть. Кажется, они пользовались какими-то картами 20-летней давности (судя по отсутствию части станций метро и названию города Ленинград).
я добавил ссылку на то что у меня вышло dl.getdropbox.com/u/930263/2.html
Там есть возможность переключатся между космоснимком от Google (кнопка спутник) и от Live.com (кнопка Live.com). Названия улиц в режиме гибрид берутся с Гугл.
Тоже этим занимался. Правый берег моего города на гугле свежий (2007г) и хорошего качества, а вот левый берег в очень низком разрешении. Писал скрипт, берущий карты с яху для нужного участка.
Забавно.
У Гугла проекция своя собственная, отличающаяся от стандартной меркаторовской ESRI:54004.
Выходит, некрософт у них не только тайлинг, но и проекцию потырила! Ололо!
Обе проекции используют стандартные меркаторы (только с различными начальными параметрами) — 1SP и 2SP.
Что же касается разницы (помимо разных вариаций меркатора) — гугл использует более грубый сфероид. Упрощение заключается в том, что их «глобус» не сплющен вдоль оси.
Если так, то и впрямь забавно — тайлы сходной структуры не только они делают.
А если все таки у MS стандартный меркатор?
Тайлинг близкий должен получаться — в пределах средней точности покрытия. Где здесь эллипс существенно скажется? Я не соображу с ходу, как проверить.
а я виноват, что мой город google не детализирует, а на live.com поиск кириллицей не находит. Вот и получился такой симбиоз двух сервисов. Интересно кстати сравнить одну и ту же поверхность от разных сервисов.
понятно, что автор стал изобретать велосипед, но ведь сделал же, реализовал, и здесь выложил свои душевные переживания (аж ссылки удивились), вопрос теперь в другом: вомзожно ли как-то автоматом определять, у какого из геосервисов спутниковое изображение одного и того же участка лучше, чтобы его и отображать?
лучше — понятие субъективное, я думаю каждый решит сам какой спутниковый снимок его города лучше.
А вот с автоматической переключением на сторонний сервис при отсутствии тайла с нужным масштабом думаю можно что нибудь придумать.
Это всё, конечно, хорошо, но условия использования тайлов Live.com запрещают обращение к ним не через их собственное API. Как и Google. Так что если хотите, чтобы это было легально — придётся вам извращаться с интеграцией обоих API между собой. :)
Кстати, эта работа была уже давно до вас проделана. :) Смотрите mapstraction.com/
Кажется идеальной была бы библиотека, которая сама рисовала управление, точки, линии. При переключении на другую карту менялась только подложка. Ну и API для разных сервисов общий.
Есть невероятно мощная и тяжелая либа OpenLayers (http://openlayers.org/) — она предоставляет общий интерфейс, но очень тормозная, неудобна в использовании и всё равно использует API других сервисов.
Чистой же либы, использующей картинки разных провайдеров данных напрямую, не может существовать в принципе, как я упоминал выше, из-за ограничений Terms of Use соответствующих продуктов.
Погорячился, при другом увеличении границы тайлов Яндекса не совпадают с границами тайлов Гугл.
Поюзайте программу SAS.Планета sasgis.ru/
если уж очень нужно яндекс тайлы + google карты\апи то предлагаю альтернативное решение. Через SAS.Планета скачать нужный участок в кеш, склеить и нарезать на тайлы самостоятельно. После этого использовать гуглапи со своими тайлами.
SAS.планету знаю, использую, но хочу веб-решение =)
А по поводу скачать и нарезать — даже для одной области и 12 уровней зума это выходит уже нетривиальное решение.
В google maps api ведь даже есть функционал необходимый, для подключения тайлов карт собственных… вот только я не силен в географии, системах координат, проекциях, поэтому не осилю эту задачу…
Нарезать свою карту на тайлы можно довольно просто — с помощью Global Mapper версии >10.02. Достаточно скормить ей растр с привязкой полученный из SAS.Планета и в меню Export web format s выбрать Google Maps tiles.
Несовпадение границ тайлов google и yandex происходит из-за различия в проекции
В google — меркатор на сферу, в yandex — на эллипсоид.
При отображении небольших областей достаточно просто сдвинуть тайл яндекса относительно гугл:
1. Находим географические к-ты левого верхнего угла гугл-тайла.
Lon = ((xG)-zoom/2)/(zoom/360)
Lat = ((yG)-zoom/2)/-(zoom/(2*PI))
Lat = (2*arctan(exp(Lat))-PI/2)*180/PI
где zoom — масштаб 0..24
xG,yG — к-ты пикселя верхнего левого угла гугл-тайла.
2. Находим к-ты пикселя на яндекс-карте соответствующие найденным выше географическим к-там, для этого можно воспользоваться:
z = sin(Lat*deg)
c = (PixelsAtZoom]/(2*Pi))
x = round(PixelsAtZoom/2+Lon*(PixelsAtZoom/360)) //x можно не считать, он будет таким же как у гугл, смещение идет только по широте.
y = round(PixelsAtZoom/2-c*(ArcTanh(z)-exct*ArcTanh(exct*z))
где
PixelsAtZoom — размер всей карты в пикселях на нужном масштабе (256,512,1024 итд).
Lat,Lon — соответственно широта и долгота
exct — эксцентриситет эллипсоида, равен sqrt(radiusa*radiusa-radiusb*radiusb)/radiusa;
где sradiusa=6378137
sradiusb=6378137
3. Находим к-ты яндекс-тайла:
xT = x div 256 //опять же, необязательно, x будет совпадать с гугл.
yT = y div 256
по этим к-ам загружаем яндекс-тайл: sat01.maps.yandex.net/tiles?l=sat&v=1.8.0&x=&y=&z=;
где zoom — масштаб 0..24
4. Находим смещение яндекс-тайла относительно гугл-тайла:
dx = x mod 256
dy = y mod 256
где x,y — к-ты пикселя полученные на 2м шаге.
Все. Теперь достаточно вывести тайлы полученные на шаге 3 со смещением, полученным на шаге 4, относительно тайлов google.
Скрестить бы вместе гугловые, майкрософтоские и яндексовские карты… Ижевск, например, в хорошем разрешении есть только в яндексе, а в гугле лишь местами.
Уже давно пользуюсь программой SASGIS — очень выручает (да и просто интересно мир посмотреть). А благодаря возможности выбора карт и слоев — для меня лучше, чем Google Earth. Особенно пригодилась, когда на майские праздники в Казань ездил.
Просто дома загрузил карту области (выделенный фрагмент) с нужной мне детализацией (8-18), а уже на месте работал с кэшем.
Большой плюс в том, что я в сети Яндекса (Яндекс.Локальная сеть). Соответственно, загрузка карт и дополнительных слоев с него идет очень быстро.
все зависит от места. Не забывайте, что Земля гораздо больше чем Московская область…
Снимок Тамбова вполне свежий, а других вообще нет ни на одном сервисе
Эксперимент: Как это работает… maps.google.com+maps.live.com