หัวข้อนี้อธิบายวิธีกําหนดค่าแผนที่ที่เพิ่มลงในแอป iOS โดยใช้ Maps SDK สําหรับ iOS
ภาพรวม
หลังจากเพิ่มแผนที่ลงในแอปแล้ว คุณสามารถกําหนดการตั้งค่าเริ่มต้นและรันไทม์ของแผนที่ได้ โปรดดูรายละเอียดเกี่ยวกับการเพิ่มคอนเทนเนอร์แผนที่ที่เพิ่มแผนที่
การตั้งค่าแผนที่เริ่มต้นมีดังต่อไปนี้
- ตําแหน่งของกล้อง ซึ่งรวมถึงตําแหน่ง การซูม ทิศทาง และเอียง ดูรายละเอียดเกี่ยวกับการจัดตําแหน่งกล้องได้ที่กล้องและมุมมอง
- ประเภทแผนที่
- คอมโพเนนต์ UI ที่จะแสดง เช่น ปุ่มซูมและเข็มทิศ
- ท่าทางสัมผัสเพื่อเปิดใช้
ระหว่างรันไทม์ คุณกําหนดการตั้งค่าเหล่านี้และการตั้งค่าเพิ่มเติมบางอย่างได้โดยอัปเดตออบเจ็กต์ GMSMapView
ประเภทแผนที่
คุณปรับแต่งแผนที่ได้ด้วยแผนที่หลายประเภท ประเภทแผนที่จะควบคุมการแสดงแผนที่โดยรวม ตัวอย่างเช่น แผนที่โลกมักประกอบด้วยแผนที่ทางการเมืองที่เน้นการแสดงขอบเขต และแผนที่ถนนที่แสดงถนนทุกสายของเมืองหรือภูมิภาค Maps SDK สําหรับ iOS มีแผนที่ประเภทต่อไปนี้
ประเภทแผนที่ | |
---|---|
ปกติ | ค่า:
kGMSTypeNormal แผนการใช้งานโดยทั่วไป แสดงถนน สถานที่บางแห่งสร้างโดยมนุษย์ และลักษณะทางธรรมชาติที่สําคัญ เช่น แม่น้ํา และแสดงป้ายกํากับถนนและฟีเจอร์ด้วย
|
ไฮบริด | ค่า:
kGMSTypeHybrid ข้อมูลภาพถ่ายดาวเทียมที่มีการเพิ่มแผนปฏิบัติการ และแสดงป้ายกํากับถนนและฟีเจอร์ด้วย |
ดาวเทียม | ค่า:
kGMSTypeSatellite ข้อมูลภาพถ่ายดาวเทียม ป้ายกํากับถนนและฟีเจอร์
จะไม่แสดง
|
ภูมิประเทศ | ค่า:
kGMSTypeTerrain ข้อมูลภูมิประเทศ แผนที่ประกอบด้วยสี เส้นรอบรูปและป้ายกํากับ และการลงสีมุมมอง ถนนและป้ายกํากับบางรายการก็ปรากฏให้เห็นเช่นกัน
|
ไม่มี | ค่า:
kGMSTypeNone ไม่มีแผนที่แผนที่ ไทล์แผนที่ฐานจะไม่แสดงผล โหมดนี้ใช้ร่วมกับเลเยอร์การ์ด ระบบจะปิดการแสดงข้อมูลการจราจรเมื่อตั้งค่าประเภทแผนที่เป็น ไม่มี |
การเปลี่ยนประเภทแผนที่
หากต้องการตั้งค่าประเภทแผนที่ ให้กําหนดค่าใหม่ให้กับพร็อพเพอร์ตี้ GMSMapView.mapType
ตัวอย่างเช่น การแสดงประเภทแผนที่ดาวเทียม
Swift
let camera = GMSCameraPosition.camera(withLatitude: -33.8683, longitude: 151.2086, zoom: 6) let mapView = GMSMapView.map(withFrame: .zero, camera: camera) mapView.mapType = .satellite
Objective-C
GMSCameraPosition *camera = [GMSCameraPosition cameraWithLatitude:-33.8683 longitude:151.2086 zoom:6]; GMSMapView *mapView = [GMSMapView mapWithFrame:CGRectZero camera:camera]; 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 ให้อนุญาตการเข้าถึงข้อมูลนี้ ในกรณีนี้ระบบจะมีค่าเป็น
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;