تو یه پروژّه باید از گوگل مپ استفاده کنم. به خاطر محدودیتهایی که دارم مجبورم از سرویس نقشه استاتیک استفاده کنم. این سرویس مختصات مرکز نقشه، درجه زوم و سایز نقشه خروجی رو میگیره و تصویر نقشه رو بر میگردونه. حالا سوال اینه: یه نقطه مشخص روی زمین، کدوم پیکسل از نقشه است؟ و بر عکس: یه پیکسل مشخص از این نقشه چه طول و عرضی داره؟
برای سوال اول:
۱- مختصات مرکز نقشه رو به رادیان تبدیل میکنم.
[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]
۵. حالا اگر همین مراحل رو هم برای مختصات پیکسلی مرکز نقشه انجام بدیم، میتونیم ببینیم پیکسلی که دنبالشیم چقدر از مرکز نقشه فاصله داره.
و سوال دوم؟ کافیه همین مراحل رو وارونه انجام بدیم.
مثلا تو این نقشه در میاد مارکر پایینی ۱۸۲ پیکسل پایینتر از مرکز نقشه است.
It’s an amazing post in favor of all the online people; they
will get advantage from it I am sure.[cheap nfl jerseys](http://ariellaymyb.mee.nu/?entry=3383025 “cheap nfl jerseys”)https://www.liveinternet.ru/users/v1jvqgq522/post492686869//http://isaachbbb.mee.nu/?entry=3382938