เพิ่มเครื่องหมายในแผนที่

ตัวอย่างนี้แสดงแผนที่ที่มีหมุดสำหรับเครื่องหมายในซิดนีย์และเมลเบิร์น ประเทศออสเตรเลีย

เริ่มต้นใช้งาน

คุณต้องกําหนดค่าสภาพแวดล้อมการพัฒนาก่อนจึงจะลองใช้โค้ดตัวอย่างได้ ดูข้อมูลเพิ่มเติมได้ที่ตัวอย่างโค้ด Maps SDK สำหรับ iOS

ดูรหัส

Swift

import GoogleMaps
import UIKit

// Sample code for adding a marker.
class MarkersViewController: UIViewController {
  private lazy var sydneyMarker = GMSMarker(
    position: CLLocationCoordinate2D(latitude: -33.8683, longitude: 151.2086))

  private lazy var melbourneMarker = GMSMarker(
    position: CLLocationCoordinate2D(latitude: -37.81969, longitude: 144.966085))

  private lazy var mapView: GMSMapView = {
    let camera = GMSCameraPosition(latitude: -37.81969, longitude: 144.966085, zoom: 4)
    return GMSMapView(frame: .zero, camera: camera)
  }()

  override func loadView() {
    view = mapView

    sydneyMarker.title = "Sydney"
    sydneyMarker.snippet = "Population: 4,605,992"
    sydneyMarker.isFlat = false
    sydneyMarker.rotation = 30
    print("sydneyMarker: \(sydneyMarker)")

    let australiaMarker = GMSMarker(
      position: CLLocationCoordinate2D(latitude: -27.994401, longitude: 140.07019))
    australiaMarker.title = "Australia"
    australiaMarker.appearAnimation = .pop
    australiaMarker.isFlat = true
    australiaMarker.isDraggable = true
    australiaMarker.groundAnchor = CGPoint(x: 0.5, y: 0.5)
    australiaMarker.icon = UIImage(named: "australia")
    australiaMarker.map = mapView

    mapView.selectedMarker = sydneyMarker
    navigationItem.rightBarButtonItem = UIBarButtonItem(
      barButtonSystemItem: .add, target: self, action: #selector(tapAdd))
  }

  @objc func tapAdd() {
    if sydneyMarker.map == nil {
      sydneyMarker.map = mapView
    } else {
      sydneyMarker.map = nil
    }
    melbourneMarker.title = "Melbourne"
    melbourneMarker.snippet = "Population: 4,169,103"
    melbourneMarker.map = mapView
  }
}
      

Objective-C

#import "GoogleMapsDemos/Samples/MarkersViewController.h"

#import <GoogleMaps/GoogleMaps.h>

@implementation MarkersViewController {
  GMSMarker *_sydneyMarker;
  GMSMarker *_melbourneMarker;
  GMSMarker *_fadeInMarker;
}

- (void)viewDidLoad {
  [super viewDidLoad];
  GMSCameraPosition *camera = [GMSCameraPosition cameraWithLatitude:-37.81969
                                                          longitude:144.966085
                                                               zoom:4];
  GMSMapView *mapView = [GMSMapView mapWithFrame:CGRectZero camera:camera];

  _sydneyMarker = [[GMSMarker alloc] init];
  _sydneyMarker.title = @"Sydney";
  _sydneyMarker.snippet = @"Population: 4,605,992";
  _sydneyMarker.position = CLLocationCoordinate2DMake(-33.8683, 151.2086);
  _sydneyMarker.flat = NO;
  _sydneyMarker.rotation = 30.0;
  NSLog(@"sydneyMarker: %@", _sydneyMarker);

  GMSMarker *australiaMarker = [[GMSMarker alloc] init];
  australiaMarker.title = @"Australia";
  australiaMarker.position = CLLocationCoordinate2DMake(-27.994401, 140.07019);
  australiaMarker.appearAnimation = kGMSMarkerAnimationPop;
  australiaMarker.flat = YES;
  australiaMarker.draggable = YES;
  australiaMarker.groundAnchor = CGPointMake(0.5, 0.5);
  australiaMarker.icon = [UIImage imageNamed:@"australia"];
  australiaMarker.map = mapView;

  _fadeInMarker = [[GMSMarker alloc] init];
  _fadeInMarker.title = @"Australia";
  _fadeInMarker.position = CLLocationCoordinate2DMake(-29.9959, 145.0719);
  _fadeInMarker.appearAnimation = kGMSMarkerAnimationFadeIn;
  _fadeInMarker.icon = [UIImage imageNamed:@"australia"];

  // Set the marker in Sydney to be selected
  mapView.selectedMarker = _sydneyMarker;

  self.view = mapView;
  self.navigationItem.rightBarButtonItem =
      [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemAdd
                                                    target:self
                                                    action:@selector(didTapAdd)];
}

- (void)didTapAdd {
  if (_sydneyMarker.map == nil) {
    _sydneyMarker.map = (GMSMapView *)self.view;
  } else {
    _sydneyMarker.map = nil;
  }

  _melbourneMarker.map = nil;
  _melbourneMarker = [[GMSMarker alloc] init];
  _melbourneMarker.title = @"Melbourne";
  _melbourneMarker.snippet = @"Population: 4,169,103";
  _melbourneMarker.position = CLLocationCoordinate2DMake(-37.81969, 144.966085);
  _melbourneMarker.map = (GMSMapView *)self.view;

  if (_fadeInMarker.map) {
    _fadeInMarker.map = nil;
  } else {
    _fadeInMarker.map = (GMSMapView *)self.view;
  }
}

@end
      

เรียกใช้แอปตัวอย่างเวอร์ชันเต็มในเครื่อง

แอปตัวอย่าง Maps SDK สําหรับ iOS มีให้บริการเป็นไฟล์เก็บถาวรที่ดาวน์โหลดได้จาก GitHub ทำตามขั้นตอนต่อไปนี้เพื่อติดตั้งและลองใช้แอปตัวอย่าง Maps SDK สําหรับ iOS

  1. เรียกใช้ git clone https://github.com/googlemaps-samples/maps-sdk-for-ios-samples.git เพื่อโคลนที่เก็บตัวอย่างไปยังไดเรกทอรีในเครื่อง
  2. เปิดหน้าต่างเทอร์มินัล ไปที่ไดเรกทอรีที่คุณโคลนไฟล์ตัวอย่าง แล้วเจาะลึกลงในไดเรกทอรี GoogleMaps

    Swift

    cd maps-sdk-for-ios-samples-main/GoogleMaps-Swift
    pod install
    open GoogleMapsSwiftDemos.xcworkspace

    Objective-C

    cd maps-sdk-for-ios-samples-main/GoogleMaps
    pod install
    open GoogleMapsDemos.xcworkspace
  3. ใน Xcode ให้กดปุ่มคอมไพล์เพื่อสร้างแอปด้วยรูปแบบปัจจุบัน บิลด์แสดงข้อผิดพลาดโดยแจ้งให้คุณป้อนคีย์ API ในSDKConstants.swiftไฟล์สำหรับ Swift หรือSDKDemoAPIKey.hไฟล์สำหรับ Objective-C
  4. หากยังไม่มีคีย์ API ให้ทําตามวิธีการเพื่อตั้งค่าโปรเจ็กต์ในคอนโซล Google Cloud และรับคีย์ API เมื่อกำหนดค่าคีย์ในคอนโซล Cloud คุณสามารถจำกัดคีย์ให้ใช้กับตัวระบุ App Bundle ของแอปตัวอย่างได้ เพื่อให้มั่นใจว่ามีเพียงแอปของคุณเท่านั้นที่ใช้คีย์ได้ ตัวระบุแพ็กเกจเริ่มต้นของแอปตัวอย่าง SDK คือ com.example.GoogleMapsDemos
  5. แก้ไขไฟล์ SDKConstants.swift สำหรับ Swift หรือไฟล์ SDKDemoAPIKey.h สำหรับ Objective-C แล้ววางคีย์ API ของคุณลงในคําจํากัดความของค่าคงที่ apiKey หรือ kAPIKey เช่น

    Swift

    static let apiKey = "YOUR_API_KEY"

    Objective-C

    static NSString *const kAPIKey = @"YOUR_API_KEY";
  6. ในSDKConstants.swiftไฟล์ (Swift) หรือSDKDemoAPIKey.hไฟล์ (Objective-C) ให้ลบบรรทัดต่อไปนี้ออก เนื่องจากใช้เพื่อบันทึกปัญหาที่ผู้ใช้กำหนด

    Swift

    #error (Register for API Key and insert here. Then delete this line.)

    Objective-C

    #error Register for API Key and insert here.
  7. สร้างและเรียกใช้โปรเจ็กต์ หน้าต่างโปรแกรมจำลอง iOS จะปรากฏขึ้นพร้อมแสดงรายการเดโม Maps SDK
  8. เลือกตัวเลือกใดตัวเลือกหนึ่งที่แสดงเพื่อทดลองใช้ฟีเจอร์ของ Maps SDK สำหรับ iOS
  9. หากได้รับข้อความแจ้งให้อนุญาตให้ GoogleMapsDemos เข้าถึงตำแหน่งของคุณ ให้เลือกอนุญาต