การแสดงตำแหน่งปัจจุบันของผู้ใช้

จากเหนือจาก GPS และ Cellular Network แล้ว SDK ยังใช้ Google Play Service ในการข่วยหาตำแหน่งปัจจุบันของผู้ใช้ด้วย เพราะฉนั้นจึงแอพพลิเคชั่นจึงต้องเพิ่ม Google Play Service เข้าไปใน dependencies ด้วย ดังนี้

แก้ไขไฟล์ build.gradle ระดับแอพพลิเคชั่นโดยเพิ่มข้อความดังนี้

dependencies {
    // other dependencies

    implementation 'com.google.android.gms:play-services-location:16.0.0'
}

วิธีการแสดงตำแหน่งปัจจุบันของผู้ใช้อย่างง่าย

เรียกใช้คำสั่ง Map.updateAndShowCurrentLocation() และยกเลิกด้วยคำสั่ง cancelUpdateAndShowCurrentLocation

@Override
protected void onPause() {
    if(ldmap != null){
        ldmap.cancelUpdateAndShowCurrentLocation(); // stop using GPS when a user leaves an application
    }

    super.onPause();
}

@Override
protected void onResume() {
    if(ldmap != null){
        ldmap.updateAndShowCurrentLocation();
    }

    super.onResume();
}

@Override
public void onMapCreated(Map map) {
    ldmap = map;
    ldmap.updateAndShowCurrentLocation();
}

หลังจากนี้ หากต้องการค่าพิกัดของตำแหน่งผู้ใช้ก็สามารถเรียกใช้คำสั่ง Map.getCurrentLocationPin().getLocation() ได้เลย

วิธีการเข้าถึงตำแหน่งผู้ใช้แบบไม่แสดงหมุดบนแผนที่

  1. สร้าง callback ด้วย ILocationListener เพื่อให้ SDK ส่งตำแหน่งของผุ้ใช้กับมาให้
     ldmap.addLocationListener(new ILocationListener() {
         @Override
         public void onGetCurrentLocation(MapLocation mapLocation, Location location) {
             Log.d("user-location",location.toString());
         }
     });
  2. สั่งให้ SDK เริ่มค้าหาตำแหน่งผู้ใช้ ซึ่งสามารถสั่งได้สองแบบคือ ค้นหาตำแหน่งแค่ครั้งเดียว หรือ ค้นหาเป็นระยะๆ
     ldmap.getCurrentLocation(); // one time
     ldmap.setMode((short) (ldmap.getMode() | Map.MODE_UPDATING_LOCATION)); // interval
  3. เมื่อ SDK ค้นหาตำแหน่งของผู้ใช้ได้แล้ว SDK จะเรียก callback ที่กำหนดไว้ในข้อ 1
  4. เมื่อผู้ใช้ออกจาก application สามารถยกเลิกการค้นหาตำแหน่งผู้ใช้ได้ด้วยคำสั่ง
     ldmap.cancelGetCurrentLocation(); // cancel one time location request
     ldmap.setMode((short) (ldmap.getMode() & ~Map.MODE_UPDATING_LOCATION)); // cancel interval location request
กลับหน้าหลัก