пятница, 30 мая 2008 г.

Кэширование Google Maps

Скрипт для отображения кэшированных тайлов при использовании Google Maps API.
Сами тайлы предварительно выгружаются при помощи gMapMaker.

четверг, 22 мая 2008 г.

Утилиты для рипа карт Google

Хорошие утилиты для rip-а карт с Google maps (и их последующего совмещения):
gMapMaker
GoogleMV

Кодировка тайлов в Google Maps (Google Maps tiles encoding)

Для перевода координат вида trtqrstsstqt
http://kh0.google.com/kh?n=404&v=17&t=trtqrstsstqt

в координаты вида x=1240, y=637, z=6
http://mt2.google.com/mt?n=404&v=w2.74&hl=en&x=1240&y=637&zoom=6&s=Ga

надо делать так:

s='trtqrstssttqqts';
m='';
x=0; y=0;
for(i=1;i<s.length;i++) {
switch(s[i]) {
case 'q': x=x*2+0; y=y*2+0; break;
case 'r': x=x*2+1; y=y*2+0; break;
case 's': x=x*2+1; y=y*2+1; break;
case 't': x=x*2+0; y=y*2+1; break;
} }
url='http://mt2.google.com/mt?n=404&v=w2.74&hl=ru&zoom='+(18-i)+'&x='+x+'&y='+y;

Обратное преобразование можно осуществить путем побитового совмещения координат x и y. При этом (0;0) дает q, (1;0) — r, (1;1) — s, (0;1) — t. Например:

x=1238; y=639; zoom=6;
ts=""; tc="qtrs";
for(i=0;i<17-zoom;i++) ts="tc[2*((x">>i)&1)+((y>>i)&1)]+ts;
}
ts="t"+ts;