แสดง Layer แบบต่างๆ

การเปลี่ยนภาพพื้นของแผนที่ (Base map)

การเปลี่ยน layer พื้นของแผนที่สามารถทำได้ด้วยการสร้างตัวแปรของ Layer ขึ้นมา แล้วส่งผ่าน method Map.setBase()

Layer l = new LongdoLayer(mContext,"gray",0,1,20);
ldmap.setBase(l);

การเพิ่ม Layer

การเพิ่ม layer สามารถทำได้ด้วยลักษณะคล้ายกับการเปลี่ยน layer พื้น แต่เปลี่ยนเป็นเรียก method Map.addLayer()

Layer น้ำท่วม
Layer l = new LongdoLayer(mContext,"gisda_glood_2011",0,1,20);
l.setTransparent(true);
ldmap.addLayer(l);

Layer เส้นสีจราจร
Layer l = new Layer(this,"trafficoverlay",Layer.LAYER_TYPE_LONGDO,1,"http://mstraffic1.longdo.com/mmmap/img.php",0,20);
l.setTransparent(true);
ldmap.addLayer(l);

การลบ Layer

ลบ layer ด้วยการ เรียก method removeLayer() และส่งชื่อของ layer เป็น parameter

ldmap.removeLayer(l.layerName)

Layer แบบต่างๆ

  1. Longdo layer เป็น layer แบบสร้างง่ายที่สุด โดยส่งแค่ mode ของ layer เป็น parameter เช่น normal, gray, icons, iconstransp, clear และอื่นๆ การใช้ Longdo layer คือการดาวน์โหลดภาพแผนที่จาก server ของ Longdo ซึ่งมีระบบจำกัดการใช้งาน โดยใช้จะใช้ฟรีเมื่อใช้งานไม่เกิน 800,000 transaction/เดือน ซึ่งถือว่าเพียงพอหากใช้เพื่อการศึกษา SDK และการใช้งานจริงที่มีฐานผู้ใช้จำนวนไม่มาก

    // mode = gray
    // weight = 0 (on top of every layer)
    // minZoom = 1 (default)
    // maxZoom = 20 (default)
    Layer l = new LongdoLayer(mContext,"gray",0,1,20);
  2. Longdo Box Layer มีลักษณะการทำงานเหมือน Longdo layer ทุกอย่าง ยกเว้นการใช้งาน server จะเปลี่ยนจาก server ของ longdo เป็น Longdo Box server ซึ่งรองรับการใช้งานภายในองค์กรและไม่มีการจำกัดจำนวนการใช้งาน การสร้าง Longdo Box layer จะต้องส่ง parameter อีก 1 ตัวเพิ่ม คือ url ของ Longdo Box server

    // mode = gray
    // longdoBoxUrl = http://ms.longdo.com/map/msn-server/img.php (ตัวอย่าง)
    Layer l = new LongdoBoxLayer(mContext,"http://ms.longdo.com/map/msn-server/img.php","icons",0,1,20);     
  3. WMS

    Layer wms = new Layer(this,"bluemarble_terrain",Layer.LAYER_TYPE_WMS,0,"https://ms.longdo.com/mapproxy/service",1,20);
  4. TMS

    Layer tms = new Layer(this,"bluemarble_terrain",Layer.LAYER_TYPE_TMS,0,"https://ms.longdo.com/mapproxy/tms/1.0.0/bluemarble_terrain/EPSG3857",1,20);
    Hashtable<String,String> options = new Hashtable<>();
    options.put("zoom-offset","-1");
    tms.setOptions(options);
  5. WMTS

    Layer wmts = new Layer(this,"bluemarble_terrain",Layer.LAYER_TYPE_WMTS_REST,0,"https://ms.longdo.com/mapproxy/wmts",1,20);
  6. การสร้าง Layer แบบหนดเอง ทำได้ด้วยการสร้าง class ใหม่ที่ extends class Layer และ override method url() โดย method url จะมีค่าต่างๆ ที่จำเป็นต่อการหาตำแหน่งของ tile มาให้ด้วย เช่น x,y และ zoom level

    การสร้าง class ใหม่

     public class CustomLayer extends Layer{
         public CustomLayer(Context context) {
             super(context, "layer_name", LAYER_TYPE_CUSTOM, 0, "https://map.longdo.com/", 1, 20);
         }
    
         @Override
         public String url(String url, long x, long y, int zoomLevel, Hashtable GETParams, String apiKey) {
             return url + "themes/longdo/logo-nopadding2.png";
         }
     }

    นำ layer ที่สร้างขึ้นเองไปแสดงในแผนที่

     ldmap.setBase(new CustomLayer(mContext));

กลับหน้าหลัก