ภาพรวมนี้จะอธิบายวิธีกำหนดค่าแผนที่ที่เพิ่มลงในแอป iOS โดยใช้ Maps SDK สำหรับ iOS
ภาพรวม
หลังจากที่เพิ่มแผนที่ลงในแอปแล้ว คุณจะกำหนดค่าตัวเลือกเริ่มต้นและการตั้งค่ารันไทม์ของแผนที่ได้ สำหรับรายละเอียดเกี่ยวกับการเพิ่มคอนเทนเนอร์แผนที่ โปรดดูเพิ่มแผนที่
การตั้งค่าแผนที่เริ่มต้นมีดังนี้
- ตำแหน่งของกล้อง ได้แก่ ตำแหน่ง การซูม ทิศทางการเอียง และการเอียง ดูรายละเอียดเกี่ยวกับตำแหน่งของกล้องได้ที่กล้องและมุมมอง
- สีพื้นหลังของแผนที่
- ประเภทแผนที่
- คอมโพเนนต์ UI ที่จะแสดง เช่น ปุ่มซูมและเข็มทิศ
- ท่าทางสัมผัสที่จะเปิดใช้
ขณะรันไทม์ คุณจะกำหนดการตั้งค่าเหล่านี้และการตั้งค่าเพิ่มเติมบางอย่างได้โดยการอัปเดตออบเจ็กต์ GMSMapView
ตัวเลือกแผนที่
เมื่อเริ่มต้นมุมมองแผนที่ ระบบจะตั้งค่าตัวเลือกการกำหนดค่าด้วย GMSMapViewOptions
พร็อพเพอร์ตี้ตัวเลือก ได้แก่ frame
, camera
, mapID
, backgroundColor
หรือ screen
ตัวเลือกแผนที่ | |
---|---|
สร้างเฟรม | ค่า:
CGRect เฟรมแผนที่ ค่าเริ่มต้นคือ CGRectZero
|
กล้อง | ค่า:
GMSCameraPosition ตำแหน่งเริ่มต้นของกล้องแผนที่
|
mapID | ค่า:
GMSMapID Google MapID พารามิเตอร์ที่ไม่บังคับ
|
backgroundColor | ค่า:
UIColor ค่าเริ่มต้นจะเป็น UIColor.lightGray
|
หน้าจอ | ค่า:
UIScreen จำเป็นสำหรับ CarPlay แสดงค่าเริ่มต้นสำหรับหน้าจอหลัก
|
กำหนดค่าตัวเลือกแผนที่
คุณจะตั้งค่าพร็อพเพอร์ตี้ตัวเลือกของคุณเองหรือส่ง 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 แผนที่ทุกคน
- แสดงแผนผังชั้นเป็นการวางซ้อนภาคพื้นดิน ซึ่งทำให้เฉพาะผู้ใช้แอปพลิเคชันของคุณเท่านั้นที่จะดูแผนผังชั้นได้
เลเยอร์การจราจร
คุณสามารถให้ผู้ใช้ดูแผนที่ซึ่งมีข้อมูลความหนาแน่นของการจราจรซ้อนทับอยู่ได้ วิธีนี้จะช่วยให้คุณเห็นภาพสรุป
สถานการณ์การจราจรในพื้นที่ คุณสามารถเปิดและปิดเลเยอร์การเข้าชมได้โดยเรียกใช้เมธอด trafficEnabled
ตัวอย่างต่อไปนี้แสดงลักษณะที่เลเยอร์การจราจรอาจปรากฏบนแผนที่
การช่วยเหลือพิเศษ
โดยค่าเริ่มต้น องค์ประกอบการช่วยเหลือพิเศษบนแผนที่จะซ่อนอยู่ คุณเปิดใช้การช่วยเหลือพิเศษได้โดยตั้งค่าพร็อพเพอร์ตี้ 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 จะปรากฏที่ขอบด้านล่างของแผนที่
คุณสามารถเพิ่มระยะห่างจากขอบของแผนที่โดยใช้ GMSMapView
padding
แผนที่จะยังคงแสดงเต็มพื้นที่ทั้งคอนเทนเนอร์ แต่การวางตำแหน่งข้อความและการควบคุม ท่าทางสัมผัสในแผนที่ และการเคลื่อนไหวของกล้องจะทํางานราวกับว่าวางอยู่ในพื้นที่ที่เล็กลง ซึ่งส่งผลให้เกิดการเปลี่ยนแปลงต่อไปนี้
- การเคลื่อนที่ของกล้องโดยใช้การเรียก API หรือการกดปุ่ม (เช่น เข็มทิศ ตำแหน่งของฉัน) จะสัมพันธ์กับบริเวณที่มีการเสริมด้วย
GMSMapView
.projection
แสดงผลการคาดการณ์ที่มีเฉพาะส่วนที่มีการบุนวม- การควบคุม UI จะออฟเซ็ตจากขอบของคอนเทนเนอร์ด้วยจำนวนจุดที่ระบุ
ระยะห่างจากขอบอาจมีประโยชน์เมื่อออกแบบ UI ที่ทับซ้อนกับบางส่วนของแผนที่ ตัวอย่างเช่น ในรูปภาพ จะมีการเสริมแผนที่ที่ขอบด้านบนและด้านขวา ตัวควบคุมแผนที่ที่มองเห็นได้และข้อความทางกฎหมายจะแสดงอยู่ตามขอบของพื้นที่ที่มีแผ่นรองแสดงเป็นสีเขียว ขณะที่แผนที่ยังคงแสดงเต็มพื้นที่ทั้งหมด ซึ่งแสดงด้วยสีน้ำเงิน ในตัวอย่างนี้ คุณสามารถทำให้เมนูลอยอยู่ทางด้านขวาของแผนที่ โดยไม่บดบังตัวควบคุมแผนที่
หากต้องการเพิ่มระยะห่างจากขอบลงในแผนที่ ให้สร้างวัตถุ UIEdgeInsets
แล้วส่งไปยัง GMSMapView
พร็อพเพอร์ตี้ padding
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;