Vakar Vidmantas prasitarė, kad Miesteliams reikėtų tokios funkcijos, kuri paveikslėlyje rodyti miesto vietą Lietuvos žemėlapyje pagal globalias žemes koordinates. Iš pradžių tai pasirodė nesunki užduotis - tiesiog atidėti tašką paveikslėlyje, tačiau pradėjus daryti pasimatė, kad ne viskas taip paprasta,panaudojau šiek tiek mokslo žinių ir užduotis buvo įveikta, bet apie viską nuo pradžių.

I love googleMiesteliuose žemėlapis rodomas su Google Maps pagalba, nes tai turbūt vienintelė tokia paslauga, kuri leidžia bet kam talpinti dinamiškus žemėlapius savo svetainėje (prieš tai žinoma reikia tą leidimą gauti, bet tai nieko nekainuoja ir tam užtenka tik puslapio adreso), be to šis servisas leidžia pagal miesto pavadinimą gauti objekto koordinates, pavyzdžiui Vilniaus koordinatės yra 54.6896, 25.2799. Labai šaunu, viskas veikia, tačiau ką daryti, jei norime pavaizduoti objekto koordinates paveikslėlyje (aš naudojau 800×500 px. dydžio paveikslėlį)? Globalių koordinačių iš kart panaudoti nepavyks, nes jos tiesiog neatitiks paveikslėlio koordinačių - globali koordinatė Lietuvai kinta vos per kelis vienetus, o paveikslėlyje tai yra keli šimtai taškų.

Iš pradžių galvojau, kad įmanoma susirasti viršutinio dešiniojo ir apatinio kairiojo paveikslėlio kampo koordinates, tačiau tai iš vis beveik neįmanoma, nes Google Maps neturi tam reikalingų įrankių - tam prireiktų liniuotės, kampo ir kitų braižybos įrankių, nes reiktų Google žemėlapyje aplink Lietuvą nubraižyti tikslų kvadratą, kuris vienodai liečia mūsų šalies kraštus kaip ir paveikslėlis. Taigi šis būdas atkrito, nes net jei ir pavyktų kažką padaryti, būtų padaryta didžiulė paklaida ir visi tolesni naudojimai būtų labai netikslūs.

ŽemėlapisAntrasis bandymas buvo paremtas beveik vien Matematika. Jau minėjau, kad informatikoje be matematikos niekaip, o šiandien ir vėl įsitikinau. O sprendimas buvo paprastas - reikia surasti dviejų, kuo labiau vienas nuo kito nutolusių (kuo didesnis atstumas tuo tikslesnis atsakymas) taškų koordinates Google žemėlapyje ir paveikslėlyje, o vėliau belieka tik surašyti paprastą proporciją, kuri parodytų kiek kinta koordinatė paveikslėlyje kintant koordinatei žemėlapyje. Atsivėriau OpenOffice.org Spreadsheet (Microsoft Office Excel atitikmuo) ir pradėjau skaičiavimus. Pradėjau nuo dviejų taškų pasirinkimo: ieškojau kuo aiškesnio ir aštresnio iškilimo Lietuvos sienoje, kurį būtų galima įžiūrėti gana mažame paveikslėlyje. Galiausiai porą radau - vienas skalaujamas Kuršių marių, o kitas netoli Lietuvos „apendicito“ Dieveniškių (Lietuvos pietvakariuose). Viskas - susiradau šių taškų koordinates su Google Maps, o su Gimp susiradau koordinates paveikslėlyje, rastus duomenis suvedžiau į skaičiuoklę, sugalvojau formules, patikslinau koordinates pagal žinomus miestus ir rezultatas prieš akis. Dabar beliko juos panaudoti.
Gautus koordinatės kitimo koeficientus susirašiau į PHP rinkmeną apdorojančią Google žemėlapius, perrašiau formules ir bandau žiūrėti rezultatus… O gi veikia! Šiek tiek pavyzdžių:

http://www.miesteliai.lt/miestas/vilnius/1000-zemelapis.jpg
http://www.miesteliai.lt/miestas/kaunas/1000-zemelapis.jpg
http://www.miesteliai.lt/miestas/pabrade/1000-zemelapis.jpg
http://www.miesteliai.lt/miestas/jonava/1000-zemelapis.jpg

Beliko šiems paveikslėliams pridėti šiek tiek dailumo, parinkti gražų miesto žymeklį, kuris kistų priklausomai nuo to ar objektas yra miestas, miestelis ar kaimas. Be to reikės pasižiūrėti ar ne gražiau kartu su Smilepaveikslėliu mažinti ir žymeklį, nes pvz.: http://www.miesteliai.lt/miestas/vilnius/100-zemelapis.jpg čia žymeklis atrodo šiek tiek per griozdiškai.

Šis darbelis užtruko keletą valandų, tačiau jis tikrai buvo įdomus, nes reikėjo ne programavimo žinių, o teisingo metodo gauti duomenimis, kuriuos vėliau galima būtų panaudoti pačioje programoje. Kaip gerai, kad dar galiu sau leisti nedirbti monotoniškų ir nuobodžių darbų :)

RSS Patiko ką perskaitei? Užsiprenumeruok RSS srautą ir visada gauk mano naujausius įrašus pats pirmas! Tai ne tik, kad yra be galo patogu, tačiau ir leis tau nepraleisti nei vieno mano įrašo. Jei kiltų problemų - rašyk.

--!>