اضافه کردن نقشه با نشانگر

این آموزش نحوه اضافه کردن یک نقشه گوگل به همراه نشانگر به برنامه iOS شما را نشان می‌دهد. این آموزش برای افرادی که دانش مبتدی یا متوسطی از Swift یا Objective-C و همچنین دانش عمومی از Xcode دارند، مناسب است. برای راهنمای پیشرفته ایجاد نقشه‌ها، راهنمای توسعه‌دهندگان را مطالعه کنید.

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

تصویری از نقشه‌ای که نشانگری بر فراز سیدنی دارد

کد را دریافت کنید

مخزن نمونه‌های iOS نقشه‌های گوگل را از گیت‌هاب کپی یا دانلود کنید.

روش دیگر، برای دانلود کد منبع روی دکمه زیر کلیک کنید:

کد رو بهم بده

سویفت

import UIKit
import GoogleMaps

class ViewController: UIViewController {

    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view.
        // Create a GMSCameraPosition that tells the map to display the
        // coordinate -33.86,151.20 at zoom level 6.
        let camera = GMSCameraPosition.camera(withLatitude: -33.86, longitude: 151.20, zoom: 6.0)
        let mapView = GMSMapView.map(withFrame: self.view.frame, camera: camera)
        self.view.addSubview(mapView)

        // Creates a marker in the center of the map.
        let marker = GMSMarker()
        marker.position = CLLocationCoordinate2D(latitude: -33.86, longitude: 151.20)
        marker.title = "Sydney"
        marker.snippet = "Australia"
        marker.map = mapView
  }
}
      

هدف-سی

#import "ViewController.h"
#import <GoogleMaps/GoogleMaps.h>

@interface ViewController ()

@end

@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];
  // Do any additional setup after loading the view.
  // Create a GMSCameraPosition that tells the map to display the
  // coordinate -33.86,151.20 at zoom level 6.
  GMSCameraPosition *camera = [GMSCameraPosition cameraWithLatitude:-33.86
                                                          longitude:151.20
                                                               zoom:6];
  GMSMapView *mapView = [GMSMapView mapWithFrame:self.view.frame camera:camera];
  mapView.myLocationEnabled = YES;
  [self.view addSubview:mapView];

  // Creates a marker in the center of the map.
  GMSMarker *marker = [[GMSMarker alloc] init];
  marker.position = CLLocationCoordinate2DMake(-33.86, 151.20);
  marker.title = @"Sydney";
  marker.snippet = @"Australia";
  marker.map = mapView;
}

@end
      

شروع کنید

مدیر بسته سوئیفت

کیت توسعه نرم‌افزار نقشه‌ها برای iOS را می‌توان با استفاده از Swift Package Manager نصب کرد.

  1. هرگونه SDK نقشه موجود برای وابستگی‌های iOS را حذف کنید.
  2. یک پنجره ترمینال باز کنید و به دایرکتوری tutorials/map-with-marker بروید.
  3. فضای کاری Xcode خود را ببندید و دستورات زیر را اجرا کنید:
    sudo gem install cocoapods-deintegrate cocoapods-clean
    pod deintegrate
    pod cache clean --all
    rm Podfile
    rm map-with-marker.xcworkspace
  4. پروژه Xcode خود را باز کنید و فایل podfile را حذف کنید.
  5. به فایل > افزودن وابستگی‌های بسته بروید.
  6. آدرس https://github.com/googlemaps/ios-maps-sdk را به عنوان URL وارد کنید، برای دریافت بسته، Enter را فشار دهید و روی Add Package کلیک کنید.
  7. ممکن است لازم باشد حافظه پنهان بسته خود را با استفاده از File > Packages > Reset Package Cache بازنشانی کنید.

از کوکوپادز استفاده کنید

  1. Xcode نسخه ۱۶.۰ یا بالاتر را دانلود و نصب کنید.
  2. اگر CocoaPods را از قبل ندارید، با اجرای دستور زیر از ترمینال، آن را روی macOS نصب کنید:
    sudo gem install cocoapods
  3. به دایرکتوری tutorials/map-with-marker بروید.
  4. دستور pod install را اجرا کنید. این دستور، Maps SDK مشخص شده در Podfile را به همراه هرگونه وابستگی نصب خواهد کرد.
  5. برای مقایسه نسخه نصب شده pod با هرگونه به‌روزرسانی جدید، pod outdated اجرا کنید. اگر نسخه جدیدی شناسایی شد، pod update اجرا کنید تا Podfile را به‌روزرسانی کرده و آخرین SDK را نصب کنید. برای جزئیات بیشتر، به راهنمای CocoaPods مراجعه کنید.
  6. برای باز کردن پروژه در Xcode، فایل map-with-marker.xcworkspace را باز کنید (روی آن دوبار کلیک کنید). برای باز کردن پروژه باید از فایل .xcworkspace استفاده کنید.

یک کلید API دریافت کنید و API های لازم را فعال کنید

برای تکمیل این آموزش، به یک کلید API گوگل نیاز دارید که مجاز به استفاده از Maps SDK برای iOS باشد. برای دریافت کلید و فعال کردن API، روی دکمه زیر کلیک کنید.

شروع کنید

برای جزئیات بیشتر، به دریافت کلید API مراجعه کنید.

کلید API را به برنامه خود اضافه کنید

کلید API خود را به صورت زیر به AppDelegate.swift خود اضافه کنید:

  1. توجه داشته باشید که عبارت import زیر به فایل اضافه شده است:
    import GoogleMaps
  2. خط زیر را در application(_:didFinishLaunchingWithOptions:) ویرایش کنید و YOUR_API_KEY را با کلید API خود جایگزین کنید:
    GMSServices.provideAPIKey("YOUR_API_KEY")

برنامه خود را بسازید و اجرا کنید

  1. یک دستگاه iOS را به رایانه خود وصل کنید، یا یک شبیه‌ساز را از منوی طرح Xcode انتخاب کنید.
  2. اگر از دستگاه استفاده می‌کنید، مطمئن شوید که سرویس‌های موقعیت مکانی فعال هستند. اگر از شبیه‌ساز استفاده می‌کنید، از منوی ویژگی‌ها ، یک مکان را انتخاب کنید.
  3. در Xcode، روی گزینه منوی Product/Run (یا آیکون دکمه پخش) کلیک کنید.
    • Xcode برنامه را می‌سازد و سپس آن را روی دستگاه یا شبیه‌ساز اجرا می‌کند.
    • شما باید نقشه‌ای را ببینید که نشانگر آن سیدنی در ساحل شرقی استرالیا را نشان می‌دهد، مشابه تصویر این صفحه.

عیب‌یابی:

  • اگر نقشه‌ای نمی‌بینید، بررسی کنید که آیا کلید API را دریافت کرده و آن را به برنامه اضافه کرده‌اید، همانطور که قبلاً توضیح داده شد . کنسول اشکال‌زدایی Xcode را برای پیام‌های خطا در مورد کلید API بررسی کنید.
  • اگر کلید API را با شناسه بسته iOS محدود کرده‌اید، کلید را ویرایش کنید تا شناسه بسته برای برنامه اضافه شود: com.google.examples.map-with-marker .
  • مطمئن شوید که اتصال وای‌فای یا جی‌پی‌اس شما خوب است.
  • از ابزارهای اشکال‌زدایی Xcode برای مشاهده‌ی گزارش‌ها و اشکال‌زدایی برنامه استفاده کنید.

کد را بفهمید

  1. یک نقشه ایجاد کنید و آن را به عنوان نمای viewDidLoad() تنظیم کنید.

    سویفت

    // Create a GMSCameraPosition that tells the map to display the
    // coordinate -33.86,151.20 at zoom level 6.
    let camera = GMSCameraPosition.camera(withLatitude: -33.86, longitude: 151.20, zoom: 6.0)
    let mapView = GMSMapView.map(withFrame: CGRect.zero, camera: camera)
    view = mapView
          

    هدف-سی

    // Create a GMSCameraPosition that tells the map to display the
    // coordinate -33.86,151.20 at zoom level 6.
    GMSCameraPosition *camera = [GMSCameraPosition cameraWithLatitude:-33.86
                                                            longitude:151.20
                                                                 zoom:6.0];
    GMSMapView *mapView = [[GMSMapView alloc] initWithFrame: CGRectZero camera:camera];
    self.view = mapView;
          
  2. یک نشانگر به نقشه در viewDidLoad() اضافه کنید.

    سویفت

    // Creates a marker in the center of the map.
    let marker = GMSMarker()
    marker.position = CLLocationCoordinate2D(latitude: -33.86, longitude: 151.20)
    marker.title = "Sydney"
    marker.snippet = "Australia"
    marker.map = mapView
          

    هدف-سی

    // Creates a marker in the center of the map.
    GMSMarker *marker = [[GMSMarker alloc] init];
    marker.position = CLLocationCoordinate2DMake(-33.86, 151.20);
    marker.title = @"Sydney";
    marker.snippet = @"Australia";
    marker.map = mapView;
          

به طور پیش‌فرض، Maps SDK برای iOS محتوای پنجره اطلاعات را هنگامی که کاربر روی یک نشانگر ضربه می‌زند نمایش می‌دهد. اگر مایل به استفاده از رفتار پیش‌فرض هستید، نیازی به اضافه کردن یک شنونده کلیک برای نشانگر نیست.

تبریک! شما یک برنامه iOS ساخته‌اید که یک نقشه گوگل را با یک نشانگر برای نشان دادن یک مکان خاص نمایش می‌دهد. همچنین یاد گرفته‌اید که چگونه از Maps SDK برای iOS استفاده کنید.

مراحل بعدی

درباره شیء نقشه و کارهایی که می‌توانید با نشانگرها انجام دهید، بیشتر بیاموزید.