یادداشت فنی پروژه

گوگل مپ ویو

از مختصات جغرافیایی تا یک نمای نقشه در اندروید

گوگل مپ ویو (GoogleMapView) کتابخانهٔ جاوای علیرضا اشرفی، منتشرشده در سال ۲۰۱۸ / ۱۳۹۶، برای نمایش نقشهٔ تصویری در اندروید است. این یادداشت مسیر تبدیل مختصات به تصویر و ساختار View را توضیح می‌دهد.

نقشهٔ کاغذی تاخورده با یک نشانگر آبی؛ تصویر مفهومی گوگل مپ ویو
تصویر مفهومی
نقش من
توسعهٔ کتابخانهٔ جاوا و انتشار کد
سال پروژه
حوزه
کتابخانهٔ اندروید

یک View برای نمایش موقعیت

گوگل مپ ویو را برای ساده‌تر کردن نمایش نقشه با طول و عرض جغرافیایی توسعه دادم و در سال ۲۰۱۸ منتشر کردم. کلاس اصلی از ImageView ارث‌بری می‌کند و در چیدمان اندروید مانند یک نمای تصویری قرار می‌گیرد.

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

مسیر تبدیل مختصات به تصویر

متد load مقادیر center، zoom، size، maptype و scale را به پارامترهای درخواست تبدیل می‌کند. سپس با Uri.Builder نشانی Google Static Maps ساخته می‌شود و Picasso تصویر دریافت‌شده را در همان ImageView قرار می‌دهد.

این مسیر سه مسئولیت روشن دارد: نگه‌داری تنظیمات، ساختن نشانی درخواست و بارگذاری تصویر. کد همین تفکیک را قابل مشاهده می‌کند؛ درخواست تصویر نقشه در یک نقطه ساخته و به بارگذار تصویر سپرده می‌شود.

  1. مختصات و تنظیمات
  2. نشانی Static Maps
  3. بارگذاری با Picasso
  4. نمایش در ImageView

تنظیم از XML یا جاوا

ویژگی‌های XML برای مختصات، نوع نقشه، مقیاس، بزرگ‌نمایی و ابعاد تعریف شده‌اند. همین تنظیمات با متدهای جاوا هم قابل تغییرند؛ برای نمونه setLocation یک Location اندروید را دریافت و عرض و طول آن را به تنظیمات نقشه منتقل می‌کند.

در نسخهٔ بررسی‌شده، تغییر تنظیمات از طریق setterها متد load را فراخوانی می‌کند. بنابراین هنگام تحلیل این طراحی باید به تعداد دفعات تغییر تنظیمات و درخواست‌های حاصل از آن نیز توجه کرد. این یک نکتهٔ قابل مشاهده در کد است، نه ادعای یک بهینه‌سازی انجام‌شده.

دو مفهوم متفاوت از بزرگ‌نمایی

mapZoom پارامتر نقشهٔ درخواستی را تغییر می‌دهد. در کنار آن، setZoomable با ابزار Zoomy امکان بزرگ‌نمایی نمای تصویری را فراهم می‌کند. بزرگ‌نمایی یک تصویر با دریافت نقشهٔ جدید در سطح جزئیات بیشتر تفاوت دارد؛ این تمایز برای انتخاب نوع تعامل روی نقشه مهم است.

مستندات و محدودهٔ استفاده

مخزن شامل نمونهٔ برنامه، تنظیمات XML و راهنمای رابط جاواست. این صفحه ساختار نسخهٔ تاریخی پروژه را ثبت می‌کند؛ برای استفادهٔ فعلی، الزامات جاری Google Maps، مدیریت کلید API و سازگاری وابستگی‌ها باید مستقل از نمونه‌های قدیمی بررسی شوند.

کد و منابع پروژه

علیرضا اشرفی

دربارهٔ نویسنده

علیرضا اشرفی؛ برنامه‌نویس، مدیر سیستم و دانشجوی دکترای نرم‌افزار در دانشگاه آزاد اسلامی، با ریشه‌هایی در ارومیه و آذربایجان ایران.

آشنایی بیشتر ↗