خیز برای اول جولای: خاموشی گوگل ریدر

گوگل ریدر (گودر) داره خاموش می‌شه. این وازه منی که از اولین روزهای تولدش تو سال ۸۶ازش استفاده می‌کردم و بعد از رفتن قابلیتهای اجتماعیش هنوزم کاربرشم خبر خوبی نیست.

از میون جایگزینای گودر چندتایی رو امتحان کردم. گودر عاس یه مقدار باسمه‌ایه. فیدلی خوبی، برای آیفون و اندروید اپ هم داره. اما اجتماعی نیست. یه پروژه قدیمی بود به اسم HivMined که الان داره به اسم HiveReader به زندگیش ادامه می‌ده. ایشون قابلیتهای اجتماعی دارن و اعلام کردن تا خاموشی گودر آماده می‌شن. توسعه دهندش الان این شغل تمام وقتشه و ظاهر سایتش هم خوبه. خلاصه که داریم برای خداحافظی آماده می‌شیم.

مختصات زمین و گوگل مپ

تو یه پروژّه باید از گوگل مپ استفاده کنم. به خاطر محدودیت‌هایی که دارم مجبورم از سرویس نقشه استاتیک استفاده کنم. این سرویس مختصات مرکز نقشه، درجه زوم و سایز نقشه خروجی رو می‌گیره و تصویر نقشه رو بر می‌گردونه. حالا سوال اینه: یه نقطه مشخص روی زمین، کدوم پیکسل از نقشه است؟ و بر عکس: یه پیکسل مشخص از این نقشه چه طول و عرضی داره؟

برای سوال اول:

۱- مختصات مرکز نقشه رو به رادیان تبدیل می‌کنم.
[c]pi = 3.1415;
lat = lat * pi / 180;
lon = lat * pi / 180;[/c]

۲- با توجه به سیستم مختصاتی که گوگل استفاده می‌کنه (Mercator/WGS84) مختصات کروی رو به مختصات مسطح تبدیل می‌کنم. (+ و +)
[c]r = 6378137; //earth radious
x = r * lon;
y = r * log( tan( pi/4 + lat/2 ) );[/c]
البته می‌شد برای دقت بیشتر بیضی بودن زمین رو هم تو محاسبات دخالت داد که تو کار من این دقت لزومی نداشت.

۳- گوگل به صورت داخلی مختصات مسطح نقشه رو به صورت اعدادی بین صفر تا ۲۵۵ نگه می‌داره. برای تبدیل مختصات مسطح به مختصات گوگل از این فرمول‌ها استفاده می‌کنم:
[c]x = x / 40075016.69 * 256;
y = y / 40000000 * 256;[/c]
اون دو تا عدد ثابت از اینجا اومده که مقدار x کلا چقدر میتونه تغییر کنه؟ یعنی مقدار x برای عرض ۱۸۰ تا ۱۸۰- چقدر تغییرات داره. در باره تغییرات y هم گوگل میگه y حداقل و حداکثر تقریبا معادل ۸۵ درجه شمالی تا ۸۵ درجه جنوبیه. و البته چون میگه تقریبا، من بازه تقریبا مساویش رو اینجا اعمال کردم.

۴- مختصات پیکسل روی نفشه بر اساس داکیومنت‌های گوگل از این رابطه به دست میاد:
[c]x = x * 2 ^ zoom;
y = y * 2 ^ zoom;[/c]

۵. حالا اگر همین مراحل رو هم برای مختصات پیکسلی مرکز نقشه انجام بدیم، می‌تونیم ببینیم پیکسلی که دنبالشیم چقدر از مرکز نقشه فاصله داره.

و سوال دوم؟ کافیه همین مراحل رو وارونه انجام بدیم.

مثلا تو این نقشه در میاد مارکر پایینی ۱۸۲ پیکسل پایینتر از مرکز نقشه است.