Dá se to udělat a to docela dost automatizovaně.
1/ obyčejná mapa se dá stahovat po čtvercích 256x256 bodů přímým načítáním těchto čtverců z jejich serveru bez nějakého snímání a simulací posouvaní myší
Příklad:
http://mt0.google.com/mt?n=404&v=w2.66&x=2098&y=1493&zoom=5
Je třeba používat střídavě http://mt0 až http://mt3 a nestahovat příliš rychle - jinak se tvoje IP dostane na google serveru na dočasný list robotů a po dobu tuším 24 hodin už nestáhneš nic. Vyhovující je 1 mapa za 5 sekund.
V uvedeném linku je možné měnit x= a y= hodnotu. Zvýšení či snížení měřítka je možné pomocí zoom= hodnoty, ale samozřejmě se musí zdvojnásobit x a y, případně vydělit dvěma za každou 1 =úroveň zoomu.
Ortho mapy jsou ještě zajímavější. Adresa je například:
http://kh3.google.com/kh?n=404&v=23&t=trtqtttrsqtrt
(je to to samé co ta běžná mapka nahoře - servery je rovněž vhodné střídat http://kh0 - http://kh3).
Stahování je u ortho zajímavější hlavně ve způsobu adresace - přišel jsem na to, jak to mají udělané - ten řetězec trtqtttrsqtrt přesně definuje úroveň zoomu i polohu čtverce. Používají písmenka q,r,s,t a každý znak o který se tento řetězec prodlouží provede zazoomování o 1 úroveň. Protože při zomování o 1 úroveň si v podstatě vybíráš, který čtverec ze 4 možných (levý horní, pravý horní, levý dolní, pravý dolní) vlastně chceš, je to jednoduché - je to označeno právě těmi písmeny a to takto:
qr
ts
Takže když retězec trtqtttrsqtrt prodloužíš o q, zazoomoješ o 1 na levý horní - detail letiště pod Nimes.
http://kh3.google.com/kh?n=404&v=23&t=trtqtttrsqtrtq
Dokonce se to dá pomocí binárních operací převádět pomocí dvojkové soustavy a to takto:
- x získáš tak, že (první znak t se nepočítá) veškerá r a s jsou "1", veškerá q a t jsou "0". V našem případě tedy rtqtttrsqtrt je 100000110010 což je 2098 po převodu do dekadické soustavy.
- y získáš tak, že (první znak t se nepočítá) veškerá s a t jsou "1", veškerá q a r jsou "0". V našem případě tedy rtqtttrsqtrt je 010111010101
což je 1493 po převodu do dekadické soustavy.
(překontrolujte v prvním linku na obyčejnou mapu ;o)
No a ke kalibraci ti pomůže jejich API - tady stačí udělat poměrně malinkou PHP stránečku, kam se jendoduše umístí jejich mapa (ta tam musí být, aby se daly volat funkce API) a pomocí
map.getCurrentMapType().getProjection().fromPixelToLatLng(new GPoint(256x+128,256y+128),zoom).lat()
a
map.getCurrentMapType().getProjection().fromPixelToLatLng(new GPoint(256x+128,256y+128),zoom).lng()
v cyklu pro x a y a konstantní z získá a do stránky zobrazí seznam x,y,lon,lat.
x a y jsou souřadnice mapového čtverce v daném zoomu a lon,lat jsou gps souřadnice středů těchto obrázků
Když se to uloží do XML, dá se pak například pomocí skvělého GNU řádkového editoru obrázků ImageMagick generovat z těchto obrázků velké pospojované obrázky (chce to dost scriptování), vytáhnout si ke každému 4 souřadnice z rohových čtverců a prohnat to automaticky kalibrací.
Použil jsem tento postup pro přípravu podkladů pro JEDEME DO PROVENCE a po mnoha hodinách programování a ručních převodů dat jsem dal dohromady sadu obrázků, XML a scriptů, které jsem spustil a po pár hodinách jsem obdržel 4 GB kalibrovaných map - klasické i ortho provedení a 6 úrovní měřítek. Navíc s překrýváním o 1 mapový čtverec.