[2.x] การแสดง Layers ของแผนที่ - MetamediaTechnology/longdo-map-demo-ios GitHub Wiki
จากตอนที่แล้ว เราสามารถแสดงผลแผนที่ได้สำเร็จมาแล้ว ต่อมาเป็นการสอนการควบคุมการแสดงผลแผนที่ด้วย Layer ต่างๆ ที่มีให้ใช้บน Longdo Map SDK for iOS ประเภทของ Map Layer ที่ใช้แสดงผลบนแผนที่มีอยู่ 2 ประเภท ได้แก่
- Base Layer เป็นแผนที่ด้านหลังสุด ใช้แสดงผลเป็นแผนที่หลัก
- Overlay Layer เป็นแผนที่แสดงด้านบน วาดทับ Base Layer อีกทีหนึ่ง สามารถเพิ่ม Overlay Layer ได้ไม่จำกัดจำนวนชั้น
การตั้งค่า Base Layer
เราจะมาลองตั้งค่าให้แผนที่เป็นแสดงผลภาพถ่ายดาวเทียม Thaichot กัน
หลังจากที่สั่งให้แสดงผลผมที่ initMapWithKey
ไปกันแล้ว ให้เพิ่มคำสั่งนี้ลงไป
MMLayer *layerThaichote = [_mapView layerName:LAYER_NAME_THAICHOTE];
[_mapView setBaseLayer:layerThaichote];
บรรทัดที่ 1 เป็นการเรียกใช้งาน Layer Thaichot จาก LongdoMap SDK โดยชื่อ layerName:LAYER_NAME_THAICHOTE
มาจากไฟล์ MMMapView.h
บรรทัดที่ 2 เป็นการสั่งเซท Base Layer เป็น layerThaichote ตามที่เราต้องการ
สุดท้ายจะได้ผลลัพธ์ดังภาพ
การตั้งค่า Overlay Layer
ต่อมาเราต้องการแสดงแผนที่ถนนแบบโปร่งใสลงบนภาพถ่ายดาวเทียม สามารถทำได้โดยการใส่ชุดคำสั่งดังต่อไปนี้ลงไป ต่อจาก setBaseLayer
MMLayer *layerPoiTransparent = [_mapView layerName:LAYER_NAME_POI_TRANSPARENT];
[_mapView addOverlayLayer:layerPoiTransparent];
สุดท้ายจะได้ผลลัพธ์ดังในภาพด้านล่าง
ตัวอย่างการแสดงแผนที่จราจร
แผนที่จราจรเป็นแผนที่ที่มีประโยชน์อย่างยิ่งสำหรับผุ้สัญจรบนท้องถนน นอกจากนั้นยังมีความพิเศษตรงที่จะมีการอัพเดทข้อมูลอยู่อย่างสม่ำเสมอ โดย Longdo Map SDK for iOS ได้จัดการการอัพเดทเหล่านั้นให้เรียบร้อยแล้ว ผู้นำไปใช้จึงไม่ต้องเป็นห่วงเรื่องความสดใหม่ของข้อมูล การแสดงแผนที่จราจรเราจะใช้แผนที่พื้นหลังเป็นแผนที่สีเทา เพื่อให้สีท้องถนนเป็นสีขาว ให้เส้นจราจรได้แสดงผลได้อย่างสวยงาม และใช้แผนที่ด้านบนเป็นแผนที่จราจร ตัวอย่างชุดคำสั่งที่ใช้เป็นดังที่แสดงด้านล่าง
MMLayer *layerGray = [_mapView layerName:LAYER_NAME_GRAY];
[_mapView setBaseLayer:layerGray];
MMLayer *layerTraffic= [_mapView layerName:LAYER_NAME_TRAFFIC];
[_mapView addOverlayLayer:layerTraffic];
การลบ Overlay Layers
เมื่อนักพัฒนาต้องการลบ Overlay Layer ออกจากการแสดงผล สามารถสั่งคำสั่ง
[_mapView removeOverlayLayer:(MMLayer *)]
โดย (MMLayer *)
เป็น Layer ที่ต้องการนำออก
นอกจากนั้นผู้พัฒนาสามารถลบการแสดงผลของ Overlay Layer ทั้งหมดออกไป เว้นไว้แต่ Base Layer ได้ด้วยคำสั่ง
[_mapView removeAllOverlayLayers];
แบบฝึกหัดเรื่องการจัดการ Layers
ให้สร้างปุ่มขึ้นมา 3 ปุ่ม Normal Traffic และ Sattlite ดังภาพ แล้วทำให้กดปุ่มแล้วเป็นการเปลี่ยน Layers ที่ใช้แสดงผลตามชื่อของปุ่ม