[2.x] การแสดง Layers ของแผนที่ - MetamediaTechnology/longdo-map-demo-ios GitHub Wiki

จากตอนที่แล้ว เราสามารถแสดงผลแผนที่ได้สำเร็จมาแล้ว ต่อมาเป็นการสอนการควบคุมการแสดงผลแผนที่ด้วย Layer ต่างๆ ที่มีให้ใช้บน Longdo Map SDK for iOS ประเภทของ Map Layer ที่ใช้แสดงผลบนแผนที่มีอยู่ 2 ประเภท ได้แก่

  1. Base Layer เป็นแผนที่ด้านหลังสุด ใช้แสดงผลเป็นแผนที่หลัก
  2. 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 ตามที่เราต้องการ

สุดท้ายจะได้ผลลัพธ์ดังภาพ

Screen Shot 2015-08-18 at 8.41.36 PM

ดูตัวอย่างที่สำเร็จแล้ว


การตั้งค่า Overlay Layer

ต่อมาเราต้องการแสดงแผนที่ถนนแบบโปร่งใสลงบนภาพถ่ายดาวเทียม สามารถทำได้โดยการใส่ชุดคำสั่งดังต่อไปนี้ลงไป ต่อจาก setBaseLayer

MMLayer *layerPoiTransparent = [_mapView layerName:LAYER_NAME_POI_TRANSPARENT];
[_mapView addOverlayLayer:layerPoiTransparent];

สุดท้ายจะได้ผลลัพธ์ดังในภาพด้านล่าง

Screen Shot 2015-08-18 at 8.41.56 PM

ดูตัวอย่างที่สำเร็จแล้ว


ตัวอย่างการแสดงแผนที่จราจร

แผนที่จราจรเป็นแผนที่ที่มีประโยชน์อย่างยิ่งสำหรับผุ้สัญจรบนท้องถนน นอกจากนั้นยังมีความพิเศษตรงที่จะมีการอัพเดทข้อมูลอยู่อย่างสม่ำเสมอ โดย 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];

Screen Shot 2015-08-18 at 8.44.00 PM

ดูตัวอย่างที่สำเร็จแล้ว


การลบ Overlay Layers

เมื่อนักพัฒนาต้องการลบ Overlay Layer ออกจากการแสดงผล สามารถสั่งคำสั่ง

[_mapView removeOverlayLayer:(MMLayer *)]

โดย (MMLayer *) เป็น Layer ที่ต้องการนำออก

นอกจากนั้นผู้พัฒนาสามารถลบการแสดงผลของ Overlay Layer ทั้งหมดออกไป เว้นไว้แต่ Base Layer ได้ด้วยคำสั่ง

[_mapView removeAllOverlayLayers];

แบบฝึกหัดเรื่องการจัดการ Layers

ให้สร้างปุ่มขึ้นมา 3 ปุ่ม Normal Traffic และ Sattlite ดังภาพ แล้วทำให้กดปุ่มแล้วเป็นการเปลี่ยน Layers ที่ใช้แสดงผลตามชื่อของปุ่ม

ดูเฉลย