یک نقشه اضافه کنید

با مجموعه‌ها، منظم بمانید ذخیره و دسته‌بندی محتوا براساس اولویت‌های شما.
پلتفرم را انتخاب کنید: Android iOS JavaScript

این مبحث نحوه افزودن یک نقشه اولیه به برنامه اندروید را پس از پیکربندی پروژه برای استفاده از Maps SDK برای Android شرح می‌دهد. پس از افزودن نقشه، می‌توانید نوع نقشه و ویژگی‌های آن را تغییر دهید.

بررسی اجمالی

Maps SDK برای Android چندین کلاس را ارائه می دهد که برنامه شما می تواند از آنها برای مدیریت چرخه عمر، عملکرد و داده های یک نقشه استفاده کند. کلاس‌ها از تعاملات کاربر بر اساس مدل رابط کاربری اندروید پشتیبانی می‌کنند، مانند تنظیم وضعیت اولیه نقشه، و پاسخ دادن به ورودی حرکتی از کاربر در زمان اجرا.

رابط اصلی و کلاس ها برای مدیریت نقشه ها:

  • GoogleMap - نقطه ورودی برای مدیریت ویژگی ها و داده های نقشه اساسی. برنامه شما فقط پس از بازیابی شی GoogleMap از یک SupportMapFragment یا MapView می تواند به آن دسترسی داشته باشد.

  • SupportMapFragment - قطعه ای برای مدیریت چرخه حیات یک شی GoogleMap .

  • MapView - نمایی برای مدیریت چرخه حیات یک شی GoogleMap .

  • OnMapReadyCallback - یک رابط پاسخ به تماس که رویدادها و تعامل کاربر را برای شی GoogleMap مدیریت می کند.

یک شی GoogleMap به طور خودکار این عملیات را انجام می دهد:

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

برای استفاده از یک شی GoogleMap در برنامه خود، باید از یک SupportMapFragment یا MapView به عنوان یک شی ظرف برای نقشه استفاده کنید و سپس شیء GoogleMap را از ظرف بازیابی کنید. از آنجایی که کلاس‌های کانتینر از یک قطعه یا نمای Android مشتق می‌شوند، نقشه را با مدیریت چرخه حیات و قابلیت‌های رابط کاربری کلاس‌های پایه اندروید خود ارائه می‌کنند. کلاس SupportMapFragment مدرن و رایج‌تر برای یک شی GoogleMap است.

کد را مشاهده کنید

کد زیر مربوط به فعالیت کامل جاوا است که در این مبحث هنگام افزودن یک قطعه به صورت ایستا استفاده می شود. پروژه اندروید از قالب پروژه Empty ایجاد شد و سپس بر اساس راهنمای پیکربندی پروژه به روز رسانی شد. پس از انجام مراحل این مبحث، ممکن است کد شما بر اساس قالب پروژه متفاوت باشد.

  package com.example.mapsetup;

  import androidx.appcompat.app.AppCompatActivity;

  import android.os.Bundle;

  import com.google.android.gms.maps.GoogleMap;
  import com.google.android.gms.maps.OnMapReadyCallback;
  import com.google.android.gms.maps.SupportMapFragment;
  import com.google.android.gms.maps.model.LatLng;
  import com.google.android.gms.maps.model.MarkerOptions;

  // Implement OnMapReadyCallback.
  public class MainActivity extends AppCompatActivity implements OnMapReadyCallback {

      @Override
      protected void onCreate(Bundle savedInstanceState) {
          super.onCreate(savedInstanceState);
          // Set the layout file as the content view.
          setContentView(R.layout.activity_main);

          // Get a handle to the fragment and register the callback.
          SupportMapFragment mapFragment = (SupportMapFragment) getSupportFragmentManager()
                  .findFragmentById(R.id.map);
          mapFragment.getMapAsync(this);

      }

      // Get a handle to the GoogleMap object and display marker.
      @Override
      public void onMapReady(GoogleMap googleMap) {
          googleMap.addMarker(new MarkerOptions()
                  .position(new LatLng(0, 0))
                  .title("Marker"));
      }
  }

برای افزودن نقشه

این بخش نحوه اضافه کردن یک نقشه اولیه را با استفاده از یک قطعه به عنوان ظرف نقشه توضیح می دهد. با این حال، می توانید به جای آن از یک View استفاده کنید. برای مثال، RawMapViewDemoActivity را در Github ببینید.

مراحل اساسی:

  1. برای دریافت SDK، یک کلید API و افزودن فریمورک های مورد نیاز، مراحل زیر را دنبال کنید:

    1. در Google Cloud Console راه اندازی کنید

    2. از یک کلید API استفاده کنید

    3. یک پروژه اندروید استودیو راه اندازی کنید

  2. یک شی SupportMapFragment به فعالیتی که نقشه را مدیریت می کند اضافه کنید. می توانید قطعه را به صورت استاتیک یا پویا اضافه کنید.

  3. رابط OnMapReadyCallback را پیاده سازی کنید.

  4. فایل طرح بندی را به عنوان نمای محتوا تنظیم کنید.

  5. اگر قطعه را به صورت ایستا اضافه کردید، یک دسته به قطعه بگیرید.

  6. پاسخ تماس را ثبت کنید.

  7. یک دسته برای شی GoogleMap بگیرید.

یک شی SupportMapFragment اضافه کنید

می توانید یک شی SupportMapFragment را به صورت ایستا یا پویا به برنامه خود اضافه کنید. ساده ترین راه اضافه کردن آن به صورت ایستا است. اگر قطعه را به صورت پویا اضافه کنید، می توانید اقدامات دیگری را روی قطعه انجام دهید، مانند حذف و جایگزینی آن در زمان اجرا.

برای افزودن یک قطعه به صورت Statically

در فایل طرح‌بندی فعالیتی که نقشه را مدیریت می‌کند:

  1. یک عنصر fragment اضافه کنید.
  2. اعلان نام xmlns:map="http://schemas.android.com/apk/res-auto" را اضافه کنید. این امکان استفاده از ویژگی های XML سفارشی maps را فراهم می کند.
  3. در عنصر fragment ، ویژگی android:name را روی com.google.android.gms.maps.SupportMapFragment تنظیم کنید.
  4. در عنصر fragment ، ویژگی android:id را اضافه کنید و آن را روی شناسه منبع R.id.map ( @+id/map ) قرار دهید.

به عنوان مثال، در اینجا یک فایل طرح بندی کامل است که شامل یک عنصر fragment است:

<?xml version="1.0" encoding="utf-8"?>
<fragment xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:map="http://schemas.android.com/apk/res-auto"
    android:name="com.google.android.gms.maps.SupportMapFragment"
    android:id="@+id/map"
    android:layout_width="match_parent"
    android:layout_height="match_parent"/>

برای افزودن یک قطعه به صورت پویا

در فعالیت:

  1. یک نمونه SupportMapFragment ایجاد کنید.
  2. تراکنشی را انجام دهید که قطعه را به فعالیت اضافه می کند. برای اطلاعات بیشتر، بخش تراکنش‌ها را ببینید.

مثلا:

جاوا


SupportMapFragment mapFragment = SupportMapFragment.newInstance();
getSupportFragmentManager()
    .beginTransaction()
    .add(R.id.my_container, mapFragment)
    .commit();

      

کاتلین


val mapFragment = SupportMapFragment.newInstance()
supportFragmentManager
    .beginTransaction()
    .add(R.id.my_container, mapFragment)
    .commit()

      

رابط OnMapReadyCallback را پیاده سازی کنید

اعلامیه فعالیت را به شرح زیر به روز کنید:

جاوا


class MainActivity extends AppCompatActivity implements OnMapReadyCallback {
    // ...
}

      

کاتلین


class MainActivity : AppCompatActivity(), OnMapReadyCallback {

    // ...
}

      

نمای محتوا را تنظیم کنید

در روش onCreate فعالیت خود، setContentView را فراخوانی کنید و فایل طرح بندی را به عنوان نمای محتوا تنظیم کنید.

به عنوان مثال، اگر نام فایل layout main.xml باشد:

جاوا


@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
}

      

کاتلین


override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    setContentView(R.layout.main)
}

      

یک دسته برای قطعه دریافت کنید و پاسخ تماس را ثبت کنید

  1. برای بدست آوردن دسته ای از قطعه، متد FragmentManager.findFragmentById را فراخوانی کنید و شناسه منبع قطعه را در فایل طرح بندی خود ارسال کنید. اگر قطعه را به صورت پویا اضافه کردید، از این مرحله بگذرید زیرا قبلاً دسته را بازیابی کرده اید.

  2. متد getMapAsync را فراخوانی کنید تا پاسخ تماس را روی قطعه تنظیم کنید.

به عنوان مثال، اگر قطعه را به صورت ایستا اضافه کنید:

جاوا


SupportMapFragment mapFragment = (SupportMapFragment) getSupportFragmentManager()
    .findFragmentById(R.id.map);
mapFragment.getMapAsync(this);

      

کاتلین


val mapFragment = supportFragmentManager
    .findFragmentById(R.id.map) as SupportMapFragment
mapFragment.getMapAsync(this)

      

یک دسته برای شی GoogleMap بگیرید

از روش پاسخ به تماس onMapReady برای دریافت یک دسته به شی GoogleMap استفاده کنید. زمانی که نقشه برای دریافت ورودی کاربر آماده باشد، تماس برگشتی فعال می شود. این یک نمونه غیر تهی از کلاس GoogleMap را ارائه می دهد که می توانید برای به روز رسانی نقشه از آن استفاده کنید.

در این مثال، callback onMapReady یک دسته را به شی GoogleMap بازیابی می کند و سپس یک نشانگر به نقشه اضافه می شود:

جاوا


@Override
public void onMapReady(GoogleMap googleMap) {
    googleMap.addMarker(new MarkerOptions()
        .position(new LatLng(0, 0))
        .title("Marker"));
}

      

کاتلین


override fun onMapReady(googleMap: GoogleMap) {
    googleMap.addMarker(
        MarkerOptions()
            .position(LatLng(0.0, 0.0))
            .title("Marker")
    )
}

      

اسکرین شات با نقشه و نشانگر در مرکز جزیره نول.

وقتی برنامه را با موفقیت بسازید و اجرا کنید، نقشه ای با نشانگر در جزیره نول (صفر درجه عرض جغرافیایی و صفر درجه طول جغرافیایی) نمایش داده می شود.

مشاهده کد فعالیت کامل:

مشاهده فعالیت کامل


بعدش چی

پس از تکمیل این مراحل، می‌توانید تنظیمات نقشه را پیکربندی کنید.