ภาพรวมนี้อธิบายวิธีกำหนดค่าแผนที่ที่เพิ่มลงในแอป iOS โดยใช้ Maps SDK สำหรับ iOS
ภาพรวม
หลังจากเพิ่มแผนที่ลงในแอปแล้ว คุณสามารถกำหนดค่าตัวเลือกเริ่มต้นและการตั้งค่ารันไทม์ของแผนที่ได้ ดูรายละเอียดเกี่ยวกับการเพิ่มคอนเทนเนอร์แผนที่ได้ที่หัวข้อเพิ่ม แผนที่
การตั้งค่าแผนที่เริ่มต้นมีดังนี้
- ตำแหน่งกล้อง ซึ่งรวมถึงสถานที่ตั้ง การซูม ทิศทาง และการเอียง ดูรายละเอียดเกี่ยวกับการวางตำแหน่งกล้องได้ที่ หัวข้อกล้องและมุมมอง
- สีพื้นหลังของแผนที่
- ประเภทแผนที่
- คอมโพเนนต์ UI ที่จะแสดง เช่น ปุ่มซูมและ เข็มทิศ
- ท่าทางสัมผัสที่จะเปิดใช้
ในรันไทม์ คุณสามารถกำหนดค่าการตั้งค่าเหล่านี้และการตั้งค่าเพิ่มเติมบางอย่างได้โดยการ
อัปเดต
GMSMapView
ออบเจ็กต์
ตัวเลือกแผนที่
เมื่อเริ่มต้นมุมมองแผนที่ ระบบจะตั้งค่าตัวเลือกการกำหนดค่าด้วย
GMSMapViewOptions
พร็อพเพอร์ตี้ตัวเลือกประกอบด้วย frame, camera, mapID หรือ backgroundColor
| ตัวเลือกแผนที่ | |
|---|---|
| สร้างเฟรม | ค่า:
CGRectเฟรมแผนที่ ค่าเริ่มต้นคือ CGRectZero
|
| กล้อง | ค่า:
GMSCameraPositionตำแหน่งกล้องเริ่มต้นของแผนที่
|
| mapID | ค่า:
GMSMapIDmapID ของ Google พารามิเตอร์ที่ไม่บังคับ
|
| backgroundColor | ค่า:
UIColorค่าเริ่มต้นคือ UIColor.lightGray
|
กำหนดค่าตัวเลือกแผนที่
คุณสามารถตั้งค่าพร็อพเพอร์ตี้ตัวเลือกของคุณเอง หรือส่ง
GMSMapViewOptions
ที่สร้างขึ้นพร้อมค่าเริ่มต้นไปยัง GMSMapView โดยตรง
Swift
let options = GMSMapViewOptions() options.camera = GMSCameraPosition.camera(withLatitude: -33.8683, longitude: 151.2086, zoom: 6) let mapView = GMSMapView(options:options)
Objective-C
GMSMapViewOptions *options = [[GMSMapViewOptions alloc] init]; options.camera = [GMSCameraPosition cameraWithLatitude:-33.8683 longitude:151.2086 zoom:6]; GMSMapView *mapView = [[GMSMapView alloc] initWithOptions:options];
ตัวอย่างการส่งออบเจ็กต์ GMSMapViewOptions ที่มีค่าเริ่มต้นไปยัง GMSMapView โดยตรง
Swift
let options = GMSMapViewOptions() let mapView = GMSMapView(options:options) //initialized with default values
Objective-C
GMSMapViewOptions *options = [[GMSMapViewOptions alloc] init]; GMSMapView *mapView = [[GMSMapView alloc] initWithOptions:options]; //initialized with default values
กำหนดค่าสีพื้นหลัง
เมื่อทำงานในโหมดมืดหรือสลับระหว่างมุมมองแผนที่ การลบล้างสีพื้นหลังเริ่มต้นของแผนที่อาจมีประโยชน์ คุณทำได้โดยตั้งค่าพร็อพเพอร์ตี้ backgroundColor ของตัวเลือกแผนที่
Swift
let options = GMSMapViewOptions() options.backgroundColor = UIColor.yellowColor let mapView = GMSMapView(options:options)
Objective-C
GMSMapViewOptions *options = [[GMSMapViewOptions alloc] init]; options.backgroundColor = UIColor.yellowColor; GMSMapView *mapView = [[GMSMapView alloc] initWithOptions:options];
ประเภทแผนที่
คุณสามารถปรับแต่งแผนที่ด้วยแผนที่ประเภทต่างๆ ได้ ประเภทของแผนที่จะกำหนดการแสดงแผนที่โดยรวม ตัวอย่างเช่น แอตลาสโดยทั่วไปจะมีแผนที่การเมือง ที่เน้นการแสดงขอบเขต และแผนที่ถนน ที่แสดงถนนทั้งหมดของเมืองหรือภูมิภาค Maps SDK สำหรับ iOS มีแผนที่ประเภทต่อไปนี้
| ประเภทแผนที่ | |
|---|---|
| ปกติ | ค่า:
kGMSTypeNormalแผนที่ถนนทั่วไป แสดงถนน ฟีเจอร์บางอย่างที่มนุษย์สร้างขึ้น
และฟีเจอร์ทางธรรมชาติที่สำคัญ เช่น แม่น้ำ ป้ายกำกับถนนและฟีเจอร์
จะปรากฏให้เห็นด้วย รองรับการตั้งค่ารูปแบบสีของแผนที่เป็นสีมืด สีอ่อน, หรือให้เป็นไปตามการตั้งค่าระบบ
|
| ไฮบริด | ค่า:
kGMSTypeHybridข้อมูลภาพถ่ายจากดาวเทียมพร้อมแผนที่ถนน ป้ายกำกับถนนและฟีเจอร์
จะปรากฏให้เห็นด้วย |
| ดาวเทียม | ค่า:
kGMSTypeSatelliteข้อมูลภาพถ่ายจากดาวเทียม ป้ายกำกับถนนและฟีเจอร์จะไม่
ปรากฏให้เห็น
|
| ภูมิประเทศ | ค่า:
kGMSTypeTerrainข้อมูลภูมิประเทศ แผนที่ประกอบด้วยสี เส้นชั้นความสูง ป้ายกำกับ
และการแรเงาตามมุมมอง ถนนและป้ายกำกับบางรายการจะปรากฏให้เห็นด้วย รองรับ
การตั้งค่ารูปแบบสีของแผนที่เป็นสีมืด สีอ่อน หรือให้เป็นไปตามการตั้งค่าระบบ
|
| ไม่มี | ค่า:
kGMSTypeNoneไม่มีไทล์แผนที่ ระบบจะไม่แสดงไทล์แผนที่ฐาน โหมดนี้มี
ประโยชน์เมื่อใช้ร่วมกับ เลเยอร์ไทล์ ระบบจะปิดใช้การแสดงข้อมูลการจราจรเมื่อตั้งค่าประเภทแผนที่เป็น
ไม่มี |
เปลี่ยนประเภทแผนที่
หากต้องการตั้งค่าประเภทแผนที่ ให้กำหนดค่าใหม่ให้กับพร็อพเพอร์ตี้ GMSMapView.mapType เช่น หากต้องการแสดงแผนที่ประเภทดาวเทียม ให้ทำดังนี้
Swift
let options = GMSMapViewOptions() options.camera = GMSCameraPosition.camera(withLatitude: -33.8683, longitude: 151.2086, zoom: 6) let mapView = GMSMapView(options:options) mapView.mapType = .satellite
Objective-C
GMSMapViewOptions *options = [[GMSMapViewOptions alloc] init]; options.camera = [GMSCameraPosition cameraWithLatitude:-33.8683 longitude:151.2086 zoom:6]; GMSMapView *mapView = [[GMSMapView alloc] initWithOptions:options]; mapView.mapType = kGMSTypeSatellite;
เครื่องมือเลือกด้านล่างแสดงการเปรียบเทียบแผนที่ภูมิประเทศ แผนที่ปกติ และแผนที่ไฮบริดสำหรับสถานที่เดียวกัน
แผนที่ในอาคาร
ที่ระดับการซูมสูง Maps SDK สำหรับ iOS จะแสดงผังชั้นของพื้นที่ในอาคาร เช่น สนามบิน ห้างสรรพสินค้า ร้านค้าปลีกขนาดใหญ่ และสถานีขนส่ง ผังชั้นในอาคารจะผสานรวมเข้ากับไทล์แผนที่เริ่มต้นสำหรับแผนที่ประเภท "ปกติ" (kGMSTypeNormal) และจะเปิดใช้โดยอัตโนมัติเมื่อผู้ใช้ซูมเข้า และจางหายไปเมื่อซูมแผนที่ออก
คุณปิดใช้แผนที่ในอาคารได้โดยตั้งค่าพร็อพเพอร์ตี้ indoorEnabled ของ GMSMapView เป็น NO
Swift
mapView.isIndoorEnabled = false
Objective-C
mapView.indoorEnabled = NO;
หรือจะปิดใช้เฉพาะการควบคุมเครื่องมือเลือกชั้นก็ได้
เพิ่มผังชั้น
ผังชั้นพร้อมให้บริการใน บาง สถานที่ หากไม่มีข้อมูลผังชั้นสำหรับอาคารที่คุณต้องการไฮไลต์ในแอปพลิเคชัน คุณสามารถทำดังนี้
- เพิ่มผังชั้น ลงใน Google Maps โดยตรง วิธีนี้จะทำให้ผังชั้นพร้อมให้บริการแก่ผู้ใช้ Google Maps ทุกคน
- แสดงผังชั้นเป็นภาพซ้อนทับบนพื้น วิธีนี้จะช่วยให้เฉพาะผู้ใช้แอปพลิเคชันของคุณเท่านั้นที่ดูผังชั้นได้
เลเยอร์การจราจร
คุณสามารถให้ผู้ใช้ดูแผนที่ที่มีข้อมูลความหนาแน่นของการจราจรซ้อนทับอยู่ด้านบนได้ ซึ่งจะแสดงข้อมูลสรุปสถานการณ์การจราจรในพื้นที่แบบภาพ คุณเปิดและปิดเลเยอร์การจราจรได้โดยเรียกใช้
เมธอด
trafficEnabled
ตัวอย่างต่อไปนี้แสดงลักษณะที่เลเยอร์การจราจรอาจปรากฏบนแผนที่

เลเยอร์ขนส่งสาธารณะ
Maps SDK สำหรับ iOS ช่วยให้คุณแสดงเครือข่ายขนส่งสาธารณะของ
เมืองบนแผนที่ได้โดยใช้
transitEnabled
เมธอด เมื่อเปิดใช้เลเยอร์การจราจรและแผนที่อยู่ตรงกลางเมืองที่รองรับข้อมูลขนส่งสาธารณะ แผนที่จะแสดงเส้นทางขนส่งสาธารณะหลักเป็นเส้นหนาสี สีของเส้นทางจะกำหนดตามข้อมูลจากผู้ให้บริการเส้นทางขนส่งสาธารณะ การเปิดใช้เลเยอร์ขนส่งสาธารณะจะเปลี่ยนรูปแบบของแผนที่ฐานเพื่อเน้นเส้นทางขนส่งสาธารณะให้ดียิ่งขึ้น
หากคุณเป็นหน่วยงานภาครัฐที่ดูแลการขนส่งมวลชนของเมืองและต้องการให้รวมข้อมูลของคุณ โปรดไปที่เว็บไซต์โปรแกรมพาร์ทเนอร์ขนส่งมวลชนของ Google เพื่อดูข้อมูลเพิ่มเติม
ตัวอย่างต่อไปนี้แสดงลักษณะที่เลเยอร์ขนส่งสาธารณะอาจปรากฏบนแผนที่

การช่วยเหลือพิเศษ
โดยค่าเริ่มต้น องค์ประกอบการช่วยเหลือพิเศษบนแผนที่จะซ่อนอยู่ คุณเปิดใช้การช่วยเหลือพิเศษได้โดยตั้งค่าพร็อพเพอร์ตี้ accessibilityElementsHidden ของ GMSMapView เป็น NO ซึ่งจะทำให้ระบบสร้างองค์ประกอบการช่วยเหลือพิเศษสำหรับออบเจ็กต์ภาพซ้อนทับ (เช่น GMSMarker และหน้าต่างข้อมูล GMSPolyline เป็นต้น)
Swift
mapView.accessibilityElementsHidden = false
Objective-C
mapView.accessibilityElementsHidden = NO;
พร็อพเพอร์ตี้นี้เป็นไปตามโปรโตคอล UIAccessibility อย่างไม่เป็นทางการ ยกเว้นว่าค่าเริ่มต้นใน Maps SDK สำหรับ iOS คือ YES
ตำแหน่งของฉัน
โดยค่าเริ่มต้น ระบบจะไม่แสดงข้อมูลตำแหน่งบนแผนที่ คุณเปิดใช้จุดสีน้ำเงิน "ตำแหน่งของฉัน" และทิศทางเข็มทิศได้โดยตั้งค่า myLocationEnabled ใน GMSMapView
Swift
mapView.isMyLocationEnabled = true
Objective-C
mapView.myLocationEnabled = YES;
การเปิดใช้ฟีเจอร์นี้จะแสดงตำแหน่งปัจจุบันของผู้ใช้ผ่านพร็อพเพอร์ตี้ myLocation พร็อพเพอร์ตี้นี้อาจไม่พร้อมใช้งานในทันที เช่น ในกรณีที่ iOS แจ้งให้ผู้ใช้ให้สิทธิ์เข้าถึงข้อมูลนี้ ในกรณีนี้ ค่าจะเป็น nil
Swift
print("User's location: \(String(describing: mapView.myLocation))")
Objective-C
NSLog(@"User's location: %@", mapView.myLocation);
สิ่งปลูกสร้าง 3 มิติ
เมื่อดูใกล้ๆ เมืองหลายแห่งจะมีสิ่งปลูกสร้าง 3 มิติปรากฏให้เห็น ดังที่แสดงในรูปภาพของซีแอตเทิล รัฐวอชิงตันด้านล่าง
คุณปิดใช้สิ่งปลูกสร้าง 3 มิติได้โดยตั้งค่าพร็อพเพอร์ตี้ที่เกี่ยวข้อง
GMSMapView
ใน Swift หรือ Objective-C ดังที่แสดงด้านล่าง
Swift
mapView.isBuildingsEnabled = false
Objective-C
[mapView setBuildingsEnabled:NO];
การเสริมพื้นที่ในแผนที่
Google Maps ได้รับการออกแบบมาให้เติมเต็มทั้งภูมิภาคที่กำหนดโดย GMSMapView
ขนาดของมุมมองจะเป็นตัวกำหนดลักษณะและลักษณะการทำงานของแผนที่ในหลายๆ ด้าน ดังนี้
- เป้าหมายของกล้องจะแสดงถึงกึ่งกลางของภูมิภาคที่มีการเสริมพื้นที่
- ตัวควบคุมแผนที่จะวางตำแหน่งสัมพัทธ์กับขอบของแผนที่
- ข้อมูลทางกฎหมาย เช่น ข้อความแสดงลิขสิทธิ์หรือโลโก้ Google จะปรากฏตามขอบด้านล่างของแผนที่
คุณสามารถเพิ่มการเสริมพื้นที่รอบขอบของแผนที่ได้โดยใช้ GMSMapViewpadding พร็อพเพอร์ตี้ แผนที่จะยังคงเติมเต็มคอนเทนเนอร์ทั้งหมด แต่การวางตำแหน่งข้อความและตัวควบคุม ท่าทางสัมผัสของแผนที่ และการเคลื่อนไหวของกล้องจะทำงานราวกับว่าแผนที่อยู่ในพื้นที่ที่เล็กลง ซึ่งจะส่งผลให้เกิดการเปลี่ยนแปลงต่อไปนี้
- การเคลื่อนไหวของกล้องโดยใช้การเรียก API หรือการกดปุ่ม (เช่น เข็มทิศ ตำแหน่งของฉัน) จะสัมพันธ์กับภูมิภาคที่มีการเสริมพื้นที่
GMSMapView.projectionจะแสดงผลการฉายภาพที่มีเฉพาะภูมิภาคที่มีการเสริมพื้นที่- ตัวควบคุม UI จะชดเชยจากขอบของคอนเทนเนอร์ตามจำนวนจุดที่ระบุ
การเสริมพื้นที่อาจเป็นประโยชน์เมื่อออกแบบ UI ที่ทับซ้อนกับแผนที่บางส่วน ตัวอย่างเช่น ในรูปภาพ แผนที่ได้รับการเสริมพื้นที่ตามขอบด้านบนและด้านขวา ตัวควบคุมแผนที่และข้อความทางกฎหมายที่มองเห็นได้จะแสดงตามขอบของภูมิภาคที่มีการเสริมพื้นที่ ซึ่งแสดงเป็นสีเขียว ขณะที่แผนที่จะยังคงเติมเต็มคอนเทนเนอร์ทั้งหมด ซึ่งแสดงเป็นสีน้ำเงิน ในตัวอย่างนี้ คุณสามารถวางเมนูไว้ทางด้านขวาของแผนที่โดยไม่บังตัวควบคุมแผนที่

หากต้องการเพิ่มการเสริมพื้นที่ลงในแผนที่ ให้สร้างออบเจ็กต์ UIEdgeInsets แล้วส่งไปยังพร็อพเพอร์ตี้ `padding` ของ GMSMapViewpadding property.
Swift
// Insets are specified in this order: top, left, bottom, right let mapInsets = UIEdgeInsets(top: 100.0, left: 0.0, bottom: 0.0, right: 300.0) mapView.padding = mapInsets
Objective-C
// Insets are specified in this order: top, left, bottom, right UIEdgeInsets mapInsets = UIEdgeInsetsMake(100.0, 0.0, 0.0, 300.0); mapView.padding = mapInsets;
รูปแบบสีของแผนที่
สำหรับแผนที่ประเภทปกติและภูมิประเทศ คุณสามารถตั้งค่ารูปแบบสีของแผนที่เป็นสีมืด สีอ่อน หรือให้ใช้การตั้งค่าระบบปัจจุบัน เช่น คุณสามารถทำให้รูปแบบสีของแผนที่มืดลงหรือสว่างขึ้นตามช่วงเวลาของวัน หรือการใช้ในอาคารหรือนอกอาคารของอุปกรณ์
ใช้ GMSMapView
overrideUserInterfaceStyle:
เพื่อตั้งค่าและอัปเดตรูปแบบสีของแผนที่
Swift
let options = GMSMapViewOptions() // Map is init to use light mode by default. let mapView = GMSMapView(options: options) // Set map to use dark mode. mapView.overrideUserInterfaceStyle = .dark // Set map to use light mode. mapView.overrideUserInterfaceStyle = .light // Set map to use dark/light mode based on the value of traitCollection.userInterfaceStyle mapView.overrideUserInterfaceStyle = .unspecified
Objective-C
GMSMapViewOptions *options = [[GMSMapViewOptions alloc] init]; // Map is init to always use light mode. GMSMapView *mapView = [[GMSMapView alloc] initWithOptions:options]; // Set map to use dark mode. mapView.overrideUserInterfaceStyle = UIUserInterfaceStyleDark; // Set map to use light mode. mapView.overrideUserInterfaceStyle = UIUserInterfaceStyleLight; // Set map to use dark/light mode based on the value of traitCollection.userInterfaceStyle mapView.overrideUserInterfaceStyle = UIUserInterfaceStyleUnspecified;
หากต้องการสร้างสไตล์สีอ่อนและสไตล์สีมืดที่กำหนดเองสำหรับแผนที่ ให้ใช้ การจัดรูปแบบแผนที่ในระบบคลาวด์