กําหนดค่าแผนที่

เลือกแพลตฟอร์ม: Android iOS

ภาพรวมนี้อธิบายวิธีกำหนดค่าแผนที่ที่เพิ่มลงในแอป iOS โดยใช้ Maps SDK สำหรับ iOS

ภาพรวม

หลังจากเพิ่มแผนที่ลงในแอปแล้ว คุณสามารถกำหนดค่าตัวเลือกเริ่มต้นและการตั้งค่ารันไทม์ของแผนที่ได้ ดูรายละเอียดเกี่ยวกับการเพิ่มคอนเทนเนอร์แผนที่ได้ที่หัวข้อเพิ่ม แผนที่

การตั้งค่าแผนที่เริ่มต้นมีดังนี้

  • ตำแหน่งกล้อง ซึ่งรวมถึงสถานที่ตั้ง การซูม ทิศทาง และการเอียง ดูรายละเอียดเกี่ยวกับการวางตำแหน่งกล้องได้ที่ หัวข้อกล้องและมุมมอง
  • สีพื้นหลังของแผนที่
  • ประเภทแผนที่
  • คอมโพเนนต์ UI ที่จะแสดง เช่น ปุ่มซูมและ เข็มทิศ
  • ท่าทางสัมผัสที่จะเปิดใช้

ในรันไทม์ คุณสามารถกำหนดค่าการตั้งค่าเหล่านี้และการตั้งค่าเพิ่มเติมบางอย่างได้โดยการ อัปเดต GMSMapView ออบเจ็กต์

ตัวเลือกแผนที่

เมื่อเริ่มต้นมุมมองแผนที่ ระบบจะตั้งค่าตัวเลือกการกำหนดค่าด้วย GMSMapViewOptions พร็อพเพอร์ตี้ตัวเลือกประกอบด้วย frame, camera, mapID หรือ backgroundColor

ตัวเลือกแผนที่
สร้างเฟรม
ค่า: CGRect
เฟรมแผนที่ ค่าเริ่มต้นคือ CGRectZero
กล้อง
ค่า: GMSCameraPosition
ตำแหน่งกล้องเริ่มต้นของแผนที่
mapID
ค่า: GMSMapID
mapID ของ 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 ตัวอย่างต่อไปนี้แสดงลักษณะที่เลเยอร์การจราจรอาจปรากฏบนแผนที่

Google Maps แสดงเลเยอร์การจราจร

เลเยอร์ขนส่งสาธารณะ

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

หากคุณเป็นหน่วยงานภาครัฐที่ดูแลการขนส่งมวลชนของเมืองและต้องการให้รวมข้อมูลของคุณ โปรดไปที่เว็บไซต์โปรแกรมพาร์ทเนอร์ขนส่งมวลชนของ Google เพื่อดูข้อมูลเพิ่มเติม

ตัวอย่างต่อไปนี้แสดงลักษณะที่เลเยอร์ขนส่งสาธารณะอาจปรากฏบนแผนที่

Google Maps แสดงเลเยอร์การขนส่งสาธารณะ

การช่วยเหลือพิเศษ

โดยค่าเริ่มต้น องค์ประกอบการช่วยเหลือพิเศษบนแผนที่จะซ่อนอยู่ คุณเปิดใช้การช่วยเหลือพิเศษได้โดยตั้งค่าพร็อพเพอร์ตี้ 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 มิติของอาคารในซีแอตเทิล รัฐวอชิงตัน

คุณปิดใช้สิ่งปลูกสร้าง 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;

หากต้องการสร้างสไตล์สีอ่อนและสไตล์สีมืดที่กำหนดเองสำหรับแผนที่ ให้ใช้ การจัดรูปแบบแผนที่ในระบบคลาวด์