ภาพรวมนี้จะอธิบายวิธีกำหนดค่าแผนที่ที่เพิ่มลงในแอป iOS โดยใช้ Maps SDK สำหรับ iOS
ภาพรวม
หลังจากเพิ่มแผนที่ลงในแอปแล้ว คุณจะกำหนดค่าตัวเลือกเริ่มต้นและรันไทม์ได้ การตั้งค่าของแผนที่ สำหรับรายละเอียดเกี่ยวกับการเพิ่มคอนเทนเนอร์แผนที่ โปรดดูเพิ่ม แผนที่
การตั้งค่าแผนที่เบื้องต้นมีดังนี้
- ตำแหน่งของกล้อง ซึ่งรวมถึงตำแหน่ง การซูม การเอียง และการเอียง โปรดดู กล้องและมุมมองสำหรับรายละเอียดเกี่ยวกับตำแหน่งของกล้อง
- สีพื้นหลังของแผนที่
- ประเภทแผนที่
- คอมโพเนนต์ UI ที่จะแสดง เช่น ปุ่มซูมและ เข็มทิศ
- ท่าทางสัมผัสเพื่อเปิดใช้
ขณะรันไทม์ คุณจะกำหนดการตั้งค่าเหล่านี้และการตั้งค่าการเพิ่มบางอย่างได้โดย
กำลังอัปเดต
GMSMapView
ออบเจ็กต์
ตัวเลือกแผนที่
เมื่อเริ่มต้นมุมมองแผนที่ ตัวเลือกการกำหนดค่าจะถูกตั้งค่าด้วย
GMSMapViewOptions
พร็อพเพอร์ตี้ตัวเลือกประกอบด้วย frame
, camera
, mapID
หรือ
backgroundColor
ตัวเลือกแผนที่ | |
---|---|
สร้างเฟรม | ค่า:
CGRect เฟรมแผนที่ ค่าเริ่มต้นคือ CGRectZero
|
กล้อง | ค่า:
GMSCameraPosition ตำแหน่งกล้องแผนที่เริ่มต้น
|
mapID | ค่า:
GMSMapID รหัสแผนที่ของ 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 ไม่มีชิ้นส่วนแผนที่ จะไม่แสดงผลชิ้นส่วนแผนที่ฐาน โหมดนี้
มีประโยชน์เมื่อใช้ร่วมกับ tile
เลเยอร์ การแสดงข้อมูลการจราจรถูกปิดใช้งานเมื่อประเภทแผนที่คือ
ตั้งค่าเป็น "ไม่มี" |
การเปลี่ยนประเภทแผนที่
หากต้องการตั้งค่าประเภทของแผนที่ ให้กำหนดค่าใหม่ให้กับ 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
ตัวอย่างต่อไปนี้แสดงลักษณะที่เลเยอร์การจราจรอาจปรากฏในแผนที่
การช่วยเหลือพิเศษ
โดยค่าเริ่มต้น ระบบจะซ่อนองค์ประกอบการช่วยเหลือพิเศษบนแผนที่ คุณสามารถเปิดใช้งาน
โดยการตั้งค่าพร็อพเพอร์ตี้ 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 มิติของอาคารในซีแอตเทิล วอชิงตัน](https://developers-dot-devsite-v2-prod.appspot.com/static/maps/documentation/ios-sdk/images/ios-3d-buildings.png?authuser=4&hl=th)
คุณสามารถปิดใช้งานสิ่งปลูกสร้าง 3 มิติได้ด้วยการตั้งค่า
GMSMapView
ใน Swift หรือ Objective-C ดังที่แสดงด้านล่าง
Swift
mapView.isBuildingsEnabled = false
Objective-C
[mapView setBuildingsEnabled:NO];
ระยะห่างจากขอบของแผนที่
Google Maps ได้รับการออกแบบมาเพื่อครอบคลุมทั้งภูมิภาคตามที่กำหนดโดย GMSMapView
ลักษณะและลักษณะการทำงานของแผนที่หลายแง่มุมจะถูกกำหนดด้วยมิติข้อมูล
ของมุมมอง ดังนี้
- เป้าหมายของกล้องสะท้อนจุดกึ่งกลางของบริเวณที่มีระยะห่างจากกัน
- ตัวควบคุมแผนที่ถูกวางตำแหน่งโดยสัมพันธ์กับขอบของแผนที่
- ข้อมูลทางกฎหมาย เช่น ข้อความลิขสิทธิ์ หรือโลโก้ Google ปรากฏขึ้น ที่ขอบด้านล่างของแผนที่
คุณสามารถเพิ่มระยะห่างจากขอบรอบขอบแผนที่ได้โดยใช้
GMSMapView
padding
แผนที่ยังคงเต็มพื้นที่
คอนเทนเนอร์ทั้งหมด ยกเว้นข้อความและการควบคุมตำแหน่ง ท่าทางสัมผัสบนแผนที่ และกล้อง
การเคลื่อนไหวจะทำงานราวกับว่าอยู่ในพื้นที่ที่เล็กกว่า ซึ่งจะส่งผล
การเปลี่ยนแปลงต่อไปนี้
- การเคลื่อนไหวของกล้องโดยใช้การเรียก API หรือการกดปุ่ม (เช่น เข็มทิศ ตำแหน่ง) จะสัมพันธ์กับพื้นที่ที่มีส่วนเพิ่ม
GMSMapView
.projection
แสดงผลการฉายภาพที่มีเฉพาะระยะห่างจากขอบ ภูมิภาค- ตัวควบคุม UI ได้รับการหักลบจากขอบของคอนเทนเนอร์ตามที่ระบุ จำนวนคะแนน
Padding มีประโยชน์เมื่อออกแบบ 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;
รูปแบบสีของแผนที่
สำหรับแผนที่ประเภทปกติและภูมิประเทศ คุณสามารถตั้งค่ารูปแบบสีแผนที่เป็นสีเข้ม หรือใช้การตั้งค่าระบบปัจจุบัน ตัวอย่างเช่น คุณสามารถปรับให้มืดลงหรือ ปรับรูปแบบสีแผนที่ให้สว่างขึ้นโดยอิงตามช่วงเวลาของวัน หรือการใช้งานในอาคารหรือกลางแจ้ง ของอุปกรณ์
ใช้ 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;