หลังจากเปิดใช้การเรียกเก็บเงินและสร้างคีย์ API คุณก็พร้อมที่จะตั้งค่าโปรเจ็กต์ Xcode ที่ใช้พัฒนาแอปแล้ว
บันทึกประจำรุ่นจะมีให้สำหรับแต่ละรุ่น
ขั้นตอนที่ 1: ติดตั้งซอฟต์แวร์ที่จำเป็น
หากต้องการสร้างโปรเจ็กต์โดยใช้ Maps SDK สำหรับ iOS คุณต้องดาวน์โหลดและติดตั้งสิ่งต่อไปนี้
ขั้นตอนที่ 2: สร้างโปรเจ็กต์ Xcode และติดตั้ง Maps SDK สำหรับ iOS
ใช้ CocoaPods
Maps SDK สำหรับ iOS พร้อมให้ใช้งานเป็นพ็อด CocoaPods CocoaPods เป็นผู้จัดการทรัพยากร Dependency แบบโอเพนซอร์สของโปรเจ็กต์ Swift และ Objective-C Cocoa
หากคุณยังไม่มีเครื่องมือ CocoaPods ให้ติดตั้งใน macOS โดยเรียกใช้คำสั่งต่อไปนี้จากเทอร์มินัล โปรดดูรายละเอียดในคู่มือเริ่มต้นใช้งาน CocoaPods
sudo gem install cocoapods
สร้าง Podfile
สำหรับ Maps SDK สำหรับ iOS และใช้เพื่อติดตั้ง API และทรัพยากร Dependency
- หากยังไม่มีโปรเจ็กต์ Xcode ให้สร้างโปรเจ็กต์ตอนนี้แล้วบันทึกลงในเครื่องภายใน หากคุณเพิ่งเริ่มใช้การพัฒนา iOS
- สร้างโปรเจ็กต์ใหม่
- เลือกเทมเพลต iOS > แอป
- ในหน้าจอตัวเลือกโปรเจ็กต์ ให้ทำดังนี้
- ป้อนชื่อโครงการ
- บันทึกค่าของช่องตัวระบุ Bundle คุณใช้ค่าดังกล่าวเพื่อจำกัดคีย์ API ได้ที่ด้านล่าง
- ตั้งค่าอินเทอร์เฟซของโปรเจ็กต์เป็นสตอรีบอร์ด
- ตั้งค่าภาษาเป็น Swift หรือ Objective-C
- สร้างไฟล์ชื่อ
Podfile
ในไดเรกทอรีโปรเจ็กต์ ไฟล์นี้ระบุทรัพยากร Dependency ของโปรเจ็กต์ - แก้ไข
Podfile
และเพิ่มทรัพยากร Dependency พร้อมด้วยเวอร์ชันของทรัพยากรดังกล่าว ต่อไปนี้คือตัวอย่างที่ประกอบด้วยทรัพยากร Dependency ที่คุณต้องใช้สำหรับ Maps SDK สำหรับ iOSsource 'https://github.com/CocoaPods/Specs.git' platform :ios, '14.0' target 'YOUR_APPLICATION_TARGET_NAME_HERE' do pod 'GoogleMaps', '8.2.0' end
อย่าลืมเรียกใช้pod outdated
เป็นประจำเพื่อตรวจหาเมื่อมีเวอร์ชันใหม่เพื่อให้คุณใช้เวอร์ชันล่าสุดอยู่เสมอ หากจำเป็น ให้อัปเกรดเป็นเวอร์ชันล่าสุด - บันทึก
Podfile
เปิดเทอร์มินัลและไปที่ไดเรกทอรีที่มี
Podfile
:cd <path-to-project>
เรียกใช้คำสั่ง
pod install
การดำเนินการนี้จะติดตั้ง API ที่ระบุในPodfile
พร้อมกับทรัพยากร Dependency ที่ผู้ใช้อาจมีpod install
ปิด Xcode แล้วเปิด (ดับเบิลคลิก) ไฟล์
.xcworkspace
ของโปรเจ็กต์เพื่อเปิด Xcode ตั้งแต่นี้เป็นต้นไป คุณต้องใช้ไฟล์.xcworkspace
เพื่อเปิดโปรเจ็กต์
หากต้องการอัปเดต API สำหรับโปรเจ็กต์ที่มีอยู่ ให้ทำตามขั้นตอนต่อไปนี้
- เปิดเทอร์มินัลแล้วไปที่ไดเรกทอรีโปรเจ็กต์ที่มี
Podfile
- เรียกใช้คำสั่ง
pod update
การดำเนินการนี้จะอัปเดต API ทั้งหมดที่ระบุในPodfile
เป็นเวอร์ชันล่าสุด
ติดตั้ง XCFramework
XCFramework เป็นแพ็กเกจไบนารีที่คุณใช้ได้ในหลายแพลตฟอร์ม รวมถึงเครื่องที่ใช้ชิปเซ็ต M1 เพื่อติดตั้ง Maps SDK สำหรับ iOS คู่มือนี้แสดงวิธีเพิ่ม XCFramework ที่มี Maps SDK สำหรับ iOS ลงในโปรเจ็กต์ของคุณ และกำหนดค่าของบิลด์ใน Xcode
สร้างด้วยตนเอง
คู่มือนี้แสดงวิธีเพิ่ม Maps SDK สำหรับ iOS ลงในโปรเจ็กต์และกำหนดการตั้งค่าบิลด์ใน Xcode ด้วยตนเอง
- ดาวน์โหลดไฟล์ต้นฉบับ SDK: GoogleMaps-8.2.0
- คลายแพคไฟล์ต้นฉบับ ไปที่โฟลเดอร์ Frameworks เพื่อเข้าถึง XCFramework
- หากยังไม่มีโปรเจ็กต์ Xcode ให้สร้างโปรเจ็กต์ตอนนี้แล้วบันทึกลงในเครื่องภายใน หากคุณเพิ่งเริ่มใช้การพัฒนา iOS
- สร้างโปรเจ็กต์ใหม่
- เลือกเทมเพลต iOS > แอป
- ในหน้าจอตัวเลือกโปรเจ็กต์ ให้ทำดังนี้
- ป้อนชื่อโครงการ
- บันทึกค่าของช่องตัวระบุ Bundle คุณใช้ค่าดังกล่าวเพื่อจำกัดคีย์ API ได้ที่ด้านล่าง
- ตั้งค่าอินเทอร์เฟซของโปรเจ็กต์เป็นสตอรีบอร์ด
- ตั้งค่าภาษาเป็น Swift หรือ Objective-C
- ลาก XCFrameworks ต่อไปนี้ลงในโปรเจ็กต์ในส่วนเฟรม ไลบรารี และเนื้อหาที่ฝัง ตรวจสอบว่าได้เลือกไม่ฝังสำหรับ XCFramework แต่ละรายการ ดังนี้
GoogleMaps-x.x.x/GoogleMapsBase.xcframework
GoogleMaps-x.x.x/GoogleMaps.xcframework
GoogleMaps-x.x.x/GoogleMapsCore.xcframework
- (ลูกค้าแพ็กเกจพรีเมียมเท่านั้น)
GoogleMaps-x.x.x/GoogleMapsM4B.xcframework
- คลิกขวาที่
GoogleMaps.xcframework
ในโปรเจ็กต์ แล้วเลือกแสดงในตัวค้นหา - ลาก
GoogleMaps.bundle
จากโฟลเดอร์ios-arm64_x86_64-simulator/GoogleMaps.framework/Resources
ไปยังไดเรกทอรีระดับบนสุดของโปรเจ็กต์ Xcode เมื่อได้รับข้อความแจ้ง ให้ตรวจสอบว่าได้ไม่ได้เลือกคัดลอกรายการหากจำเป็น - เลือกโปรเจ็กต์จาก Project Navigator แล้วเลือกเป้าหมายของแอปพลิเคชัน
- เปิดแท็บสร้างขั้นตอนสำหรับเป้าหมายของแอปพลิเคชัน และภายในลิงก์ไบนารีกับไลบรารี แล้วเพิ่มเฟรมเวิร์กและไลบรารีต่อไปนี้
Accelerate.framework
CoreData.framework
CoreGraphics.framework
CoreImage.framework
CoreLocation.framework
CoreTelephony.framework
CoreText.framework
GLKit.framework
ImageIO.framework
libc++.tbd
libz.tbd
Metal.framework
OpenGLES.framework
QuartzCore.framework
SystemConfiguration.framework
UIKit.framework
เลือกโปรเจ็กต์แทนเป้าหมายที่เฉพาะเจาะจง แล้วเปิดแท็บการตั้งค่าบิลด์ ในส่วน Other Linker Flags ให้เพิ่ม
-ObjC
หากไม่เห็นการตั้งค่าเหล่านี้ ให้เปลี่ยนตัวกรองในแถบการตั้งค่าบิลด์จากพื้นฐานเป็นทั้งหมดหากต้องการติดตั้ง Places SDK สำหรับ iOS XCFramework โปรดดูเริ่มต้นใช้งาน Places SDK สำหรับ iOS
มีคาร์เธจ
ติดตั้งด้วยตัวเอง
คู่มือนี้แสดงวิธีเพิ่ม Maps SDK สำหรับ iOS ลงในโปรเจ็กต์ด้วยตนเอง รวมทั้งกำหนดการตั้งค่าบิลด์ใน Xcode
- ดาวน์โหลดไฟล์ต้นฉบับ SDK: GoogleMaps-8.2.0
- คลายแพคไฟล์ต้นฉบับ
- หากยังไม่มีโปรเจ็กต์ Xcode ให้สร้างโปรเจ็กต์ตอนนี้แล้วบันทึกลงในเครื่องภายใน หากคุณเพิ่งเริ่มใช้การพัฒนา iOS
- สร้างโปรเจ็กต์ใหม่
- เลือกเทมเพลต iOS > แอป
- ในหน้าจอตัวเลือกโปรเจ็กต์ ให้ทำดังนี้
- ป้อนชื่อโครงการ
- บันทึกค่าของช่องตัวระบุ Bundle คุณใช้ค่าดังกล่าวเพื่อจำกัดคีย์ API ได้ที่ด้านล่าง
- ตั้งค่าอินเทอร์เฟซของโปรเจ็กต์เป็นสตอรีบอร์ด
- ตั้งค่าภาษาเป็น Swift หรือ Objective-C
- ลากแพ็กเกจต่อไปนี้ลงในโปรเจ็กต์ (เมื่อได้รับข้อความแจ้ง ให้เลือกคัดลอกรายการหากจำเป็น โปรดใช้เวอร์ชันเดียวกับด้านบน)
GoogleMaps-x.x.x/Base/Frameworks/GoogleMapsBase.xcframework
GoogleMaps-x.x.x/Maps/Frameworks/GoogleMaps.xcframework
GoogleMaps-x.x.x/Maps/Frameworks/GoogleMapsCore.xcframework
- (ลูกค้าแพ็กเกจพรีเมียมเท่านั้น)
GoogleMaps-x.x.x/M4B/Frameworks/GoogleMapsM4B.xcframework
- คลิกขวาที่
GoogleMaps.xcframework
ในโปรเจ็กต์ แล้วเลือกแสดงในตัวค้นหา - ลาก
GoogleMaps.bundle
จากโฟลเดอร์Resources
ไปยังไดเรกทอรีระดับบนสุดของโปรเจ็กต์ Xcode เมื่อได้รับข้อความแจ้ง ให้ไม่ได้เลือกคัดลอกรายการไปยังโฟลเดอร์ของกลุ่มปลายทาง - เลือกโปรเจ็กต์จาก Project Navigator แล้วเลือกเป้าหมายของแอปพลิเคชัน
- เปิดแท็บสร้างขั้นตอนสำหรับเป้าหมายของแอปพลิเคชัน และเพิ่มเฟรมเวิร์กและไลบรารีต่อไปนี้ภายในลิงก์ไบนารีกับไลบรารี
Accelerate.framework
CoreData.framework
CoreGraphics.framework
CoreImage.framework
CoreLocation.framework
CoreTelephony.framework
CoreText.framework
GLKit.framework
ImageIO.framework
libc++.tbd
libz.tbd
Metal.framework
OpenGLES.framework
QuartzCore.framework
SystemConfiguration.framework
UIKit.framework
เลือกโปรเจ็กต์แทนเป้าหมายที่เฉพาะเจาะจง แล้วเปิดแท็บการตั้งค่าบิลด์ ในส่วน Other Linker Flags ให้เพิ่ม
-ObjC
หากไม่เห็นการตั้งค่าเหล่านี้ ให้เปลี่ยนตัวกรองในแถบการตั้งค่าบิลด์จากพื้นฐานเป็นทั้งหมดหากต้องการติดตั้ง Places SDK สำหรับ iOS โปรดดู เริ่มต้นใช้งาน Places SDK สำหรับ iOS
ขั้นตอนที่ 3: เพิ่มคีย์ API ลงในโปรเจ็กต์
คุณสร้างคีย์ API สำหรับแอปในรับคีย์ API แล้ว ตอนนี้ให้เพิ่มคีย์ดังกล่าวในโปรเจ็กต์ Xcode
ในตัวอย่างต่อไปนี้ ให้แทนที่ YOUR_API_KEY
ด้วยคีย์ API ของคุณ
Swift
เพิ่มคีย์ API ลงใน AppDelegate.swift
ดังนี้
- เพิ่มคำสั่งการนำเข้าต่อไปนี้
import GoogleMaps
- เพิ่มสิ่งต่อไปนี้ลงในเมธอด
application(_:didFinishLaunchingWithOptions:)
โดยใช้คีย์ API ของคุณ:GMSServices.provideAPIKey("YOUR_API_KEY")
- หากคุณใช้ Places API ด้วย ให้เพิ่มคีย์อีกครั้งตามที่แสดงไว้ที่นี่
GMSPlacesClient.provideAPIKey("YOUR_API_KEY")
Objective-C
เพิ่มคีย์ API ลงใน AppDelegate.m
ดังนี้
- เพิ่มคำสั่งการนำเข้าต่อไปนี้
@import GoogleMaps;
- เพิ่มสิ่งต่อไปนี้ลงในเมธอด
application:didFinishLaunchingWithOptions:
โดยใช้คีย์ API ของคุณ:[GMSServices provideAPIKey:@"YOUR_API_KEY"];
- หากคุณใช้ Places API ด้วย ให้เพิ่มคีย์อีกครั้งตามที่แสดงไว้ที่นี่
[GMSPlacesClient provideAPIKey:@"YOUR_API_KEY"];
ขั้นตอนที่ 4 (ไม่บังคับ): เลือกใช้เฟรมเวิร์กการแสดงผลโลหะ
Maps SDK สำหรับ iOS ช่วยให้คุณเลือกใช้เฟรมเวิร์กการแสดงผลโลหะจาก Apple ได้ หากต้องการลองใช้โหมดแสดงภาพโลหะในแอป ให้เรียก [GMSServices
setMetalRendererEnabled:YES]
ใน Objective-C หรือ
GMSServices.setMetalRendererEnabled(true)
ใน Swift ก่อนที่จะสร้างมุมมองแผนที่
หากติดตั้ง SDK ด้วยตนเอง คุณต้องเพิ่ม Metal.framework
ใน Xcode ด้วย
ขั้นตอนที่ 5: เพิ่มแผนที่
โค้ดด้านล่างแสดงวิธีการเพิ่มแผนที่แบบง่ายไปยัง ViewController
ที่มีอยู่
เพิ่มหรืออัปเดตเมธอดใน
ViewController
เริ่มต้นของแอปเพื่อสร้างและเริ่มต้นอินสแตนซ์ของGMSMapView
Swift
/* * Copyright 2020 Google Inc. All rights reserved. * * * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this * file except in compliance with the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software distributed under * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF * ANY KIND, either express or implied. See the License for the specific language governing * permissions and limitations under the License. */ 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 } }
Objective-C
/* * Copyright 2020 Google Inc. All rights reserved. * * * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this * file except in compliance with the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software distributed under * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF * ANY KIND, either express or implied. See the License for the specific language governing * permissions and limitations under the License. */ #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
เรียกใช้แอปพลิเคชัน คุณควรจะเห็นแผนที่ซึ่งมีเครื่องหมายเดี่ยวอยู่ตรงกลาง เมืองซิดนีย์ ออสเตรเลีย หากเห็นเครื่องหมาย แต่แผนที่มองไม่เห็น ให้ยืนยันว่าคุณได้ระบุคีย์ API แล้ว
ขั้นตอนที่ 6 (ไม่บังคับ): ประกาศรูปแบบ URL ที่ API ใช้
แอปสามารถประกาศรูปแบบ URL ที่ต้องการเปิดได้ใน iOS 9 และ Xcode 7 โดยระบุรูปแบบในไฟล์ Info.plist
ของแอป Maps SDK สำหรับ iOS จะเปิดแอป Google Maps บนอุปกรณ์เคลื่อนที่เมื่อผู้ใช้คลิกโลโก้ Google บนแผนที่ แอปของคุณจึงประกาศสคีม URL ที่เกี่ยวข้องได้
หากต้องการประกาศรูปแบบ URL ที่ Maps SDK สำหรับ iOS ใช้ ให้เพิ่มบรรทัดต่อไปนี้ลงใน Info.plist
<key>LSApplicationQueriesSchemes</key>
<array>
<string>googlechromes</string>
<string>comgooglemaps</string>
</array>
ภาพหน้าจอต่อไปนี้แสดงการกำหนดค่าในอินเทอร์เฟซผู้ใช้ Xcode
หากไม่มีการประกาศข้างต้น ข้อผิดพลาดต่อไปนี้อาจเกิดขึ้นเมื่อผู้ใช้แตะโลโก้ Google บนแผนที่
-canOpenURL: failed for URL: "comgooglemaps://" - error: "This app is not allowed to query for scheme comgooglemaps"
-canOpenURL: failed for URL: "googlechromes://" - error: "This app is not allowed to query for scheme googlechromes"
หากต้องการกำจัดข้อผิดพลาดเหล่านี้ ให้เพิ่มการประกาศลงใน Info.plist
ตามที่อธิบายไว้ข้างต้น
ขั้นตอนถัดไป
ตอนนี้คุณมีคีย์ API และโปรเจ็กต์ Xcode แล้ว คุณก็สร้างและเรียกใช้แอปได้ Maps SDK สำหรับ iOS มีบทแนะนำและแอปตัวอย่างมากมายที่จะช่วยคุณในการเริ่มต้นใช้งาน โปรดดูรายละเอียดเพิ่มเติมจากหัวข้อต่อไปนี้