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