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

เลือกแพลตฟอร์ม แอนดรอยด์ iOS

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

ภาพรวม

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

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

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

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 ได้รับการหักลบจากขอบของคอนเทนเนอร์ตามที่ระบุ จำนวนคะแนน

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;