Android: LocationManager กับบริการ Google Play


151

ฉันต้องการที่จะสร้าง app ที่ศูนย์รอบรับตำแหน่งปัจจุบันของผู้ใช้แล้วพบว่าจุดที่น่าสนใจ (เช่นบาร์ร้านอาหาร ฯลฯ ) ที่อยู่ใกล้กับเขา / เธอผ่านทางGoogle Places API

เมื่อค้นหาเว็บไซต์เพื่อเริ่มต้นฉันเจอบทเรียนบางอย่างที่ใช้LocationManagerชั้นเรียนและอื่น ๆ ที่ใช้บริการ Google Playเพื่อค้นหาตำแหน่งของผู้ใช้

ตั้งแต่แรกเห็นพวกเขาทั้งสองทำสิ่งเดียวกัน แต่เนื่องจากฉันยังใหม่กับสิ่งนี้ฉันสับสนเล็กน้อยและฉันไม่รู้ว่าวิธีใดที่เหมาะสมกับความต้องการของฉันที่สุด ดังนั้นฉันต้องการถามคุณ:

อะไรคือความแตกต่างระหว่างสองวิธีในการค้นหาสถานที่ (ถ้ามี)


1
เยี่ยมชมที่นี่stackoverflow.com/questions/21397177/…
Mohammad Tauqir

คำตอบ:


320

ตำแหน่งของผู้ใช้บน Android

การรับตำแหน่งของผู้ใช้บน Android นั้นค่อนข้างตรงไปตรงมาน้อยกว่าบน iOS เพื่อเริ่มต้นความสับสนมีสองวิธีที่แตกต่างกันโดยสิ้นเชิงที่คุณสามารถทำได้ เป็นครั้งแรกที่มีการใช้ API Android จากandroid.location.LocationListenerและที่สองคือการใช้ com.google.android.gms.location.LocationListenerAPI เรามาดูทั้งคู่กัน

  1. API ตำแหน่งของ Android

    API ตำแหน่งของ Android ใช้ผู้ให้บริการสามรายในการรับตำแหน่ง -

    • LocationManager.GPS_PROVIDER- ผู้ให้บริการนี้กำหนดสถานที่โดยใช้ดาวเทียม ผู้ให้บริการนี้อาจใช้เวลาสักครู่ในการส่งคืนการแก้ไขตำแหน่งทั้งนี้ขึ้นอยู่กับเงื่อนไข
    • LocationManager.NETWORK_PROVIDER- ผู้ให้บริการนี้จะกำหนดสถานที่ตามความพร้อมของ Cell Tower และจุดเชื่อมต่อ WiFi ผลลัพธ์จะถูกค้นคืนโดยการค้นหาเครือข่าย
    • LocationManager.PASSIVE_PROVIDER- ผู้ให้บริการนี้จะส่งคืนตำแหน่งที่สร้างโดยผู้ให้บริการรายอื่น คุณจะได้รับการอัปเดตตำแหน่งอย่างอดทนเมื่อแอปพลิเคชันหรือบริการอื่นร้องขอโดยไม่ขอตำแหน่งด้วยตนเอง

สรุปสาระสำคัญของมันคือการที่คุณจะได้รับวัตถุของLocationManagerจากระบบใช้LocationListenerและเรียกบนrequestLocationUpdatesLocationManager

นี่คือข้อมูลโค้ด:

    LocationManager locationManager = (LocationManager) this.getSystemService(Context.LOCATION_SERVICE);
// Define a listener that responds to location updates
LocationListener locationListener = new LocationListener() {
    public void onLocationChanged(Location location) {
      // Called when a new location is found by the network location provider.
      makeUseOfNewLocation(location);
    }

    public void onStatusChanged(String provider, int status, Bundle extras) {}

    public void onProviderEnabled(String provider) {}

    public void onProviderDisabled(String provider) {}
  };

// Register the listener with the Location Manager to receive location updates
locationManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 0, 0, locationListener);

คู่มือ API ของ Google เกี่ยวกับกลยุทธ์สถานที่ตั้งอธิบายรหัสได้เป็นอย่างดี แต่พวกเขายังกล่าวว่าในกรณีส่วนใหญ่คุณจะได้รับประสิทธิภาพของแบตเตอรี่ที่ดีขึ้นรวมถึงความแม่นยำที่เหมาะสมยิ่งขึ้นโดยใช้Google Location Services APIแทน ตอนนี้ความสับสนเริ่มขึ้นแล้ว!

  1. API บริการตำแหน่งของ Google

API บริการตำแหน่งของ Google เป็นส่วนหนึ่งของ APK ของ Google Play Services ( นี่คือวิธีการตั้งค่า ) พวกมันถูกสร้างขึ้นบน API ของ Android API เหล่านี้มี "ผู้ให้บริการตำแหน่งที่หลอมรวม" แทนผู้ให้บริการที่กล่าวถึงข้างต้น ผู้ให้บริการนี้จะเลือกผู้ให้บริการพื้นฐานที่จะใช้โดยอัตโนมัติตามความถูกต้องการใช้งานแบตเตอรี่ ฯลฯ มันรวดเร็วเพราะคุณได้รับตำแหน่งจากบริการทั่วทั้งระบบที่คอยอัปเดตอยู่เสมอ และคุณสามารถใช้คุณสมบัติขั้นสูงเพิ่มเติมเช่นการหาตำแหน่งทางภูมิศาสตร์

การใช้บริการสถานที่ตั้งของ Google app GooglePlayServicesClientของคุณต้องการที่จะเชื่อมต่อกับ ในการเชื่อมต่อกับไคลเอนต์กิจกรรมของคุณ (หรือแฟรกเมนต์หรืออื่น ๆ ) จำเป็นต้องใช้งานGooglePlayServicesClient.ConnectionCallbacksและGooglePlayServicesClient.OnConnectionFailedListenerอินเทอร์เฟซ นี่คือตัวอย่างรหัส:

    public class MyActivity extends Activity implements ConnectionCallbacks, OnConnectionFailedListener {
    LocationClient locationClient;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_my);
        locationClient = new LocationClient(this, this, this);
    }

    @Override
    public void onConnected(Bundle bundle) {
    Location location = locationClient.getLastLocation() ;
        Toast.makeText(this, "Connected to Google Play Services", Toast.LENGTH_SHORT).show();
    }

    @Override
    public void onDisconnected() {
    Toast.makeText(this, "Connected from Google Play Services.", Toast.LENGTH_SHORT).show();
    }

    @Override
    public void onConnectionFailed(ConnectionResult connectionResult) {
        // code to handle failed connection
        // this code can be found here — http://developer.android.com/training/location/retrieve-current.html 
    }
  • ทำไมเป็นlocationClient.getLastLocation()โมฆะ?

locationClient.getLastLocation()ได้รับตำแหน่งที่ทราบล่าสุดจากลูกค้า อย่างไรก็ตามผู้ให้บริการตำแหน่งที่หลอมรวมจะรักษาตำแหน่งพื้นหลังเฉพาะเมื่อมีอย่างน้อยหนึ่งไคลเอ็นต์ที่เชื่อมต่ออยู่ เมื่อไคลเอนต์แรกเชื่อมต่อแล้วมันจะพยายามหาที่ตั้งทันที หากกิจกรรมของคุณเป็นลูกค้าคนแรกที่จะเชื่อมต่อและคุณโทรgetLastLocation()ได้ทันทีในonConnected()ที่ไม่อาจจะมีเวลามากพอสำหรับสถานที่แรกที่จะมาใน. นี้จะส่งผลให้มีความเป็นอยู่locationnull

ในการแก้ปัญหานี้คุณต้องรอ (ไม่ทราบแน่ชัด) จนกว่าผู้ให้บริการจะได้รับที่ตั้งแล้วโทรติดต่อgetLastLocation()ซึ่งเป็นไปไม่ได้ที่จะรู้ ตัวเลือกอื่น (ดีกว่า) คือการใช้com.google.android.gms.location.LocationListenerอินเทอร์เฟซเพื่อรับการอัปเดตตำแหน่งเป็นระยะ (และปิดเมื่อคุณได้รับการอัปเดตครั้งแรก)

    public class MyActivity extends Activity implements ConnectionCallbacks, OnConnectionFailedListener, LocationListener {
    // . . . . . . . . more stuff here 
    LocationRequest locationRequest;
    LocationClient locationClient;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        // . . . . other initialization code
        locationClient = new LocationClient(this, this, this);
    locationRequest = new LocationRequest();
    // Use high accuracy
    locationRequest.setPriority(LocationRequest.PRIORITY_HIGH_ACCURACY);
        // Set the update interval to 5 seconds
    locationRequest.setInterval(UPDATE_INTERVAL);
        // Set the fastest update interval to 1 second
    locationRequest.setFastestInterval(FASTEST_INTERVAL);
    }
    // . . . . . . . . other methods 
    @Override
    public void onConnected(Bundle bundle) {
        Location location = locationClient.getLastLocation();
        if (location == null)
            locationClient.requestLocationUpdates(locationRequest, this);
        else
            Toast.makeText(getActivity(), "Location: " + location.getLatitude() + ", " + location.getLongitude(), Toast.LENGTH_SHORT).show();
    }
    // . . . . . . . . other methods
    @Override
    public void onLocationChanged(Location location) {
        locationClient.removeLocationUpdates(this);
        // Use the location here!!!
    }

ในรหัสนี้คุณกำลังตรวจสอบว่าลูกค้ามีตำแหน่งสุดท้ายอยู่แล้ว (เป็นonConnected) หากไม่ใช่คุณกำลังขออัปเดตตำแหน่งและปิดคำขอ (ในการonLocationChanged()ติดต่อกลับ) ทันทีที่คุณได้รับการอัปเดต

โปรดทราบว่าlocationClient.requestLocationUpdates(locationRequest, this);จะต้องอยู่ภายในการonConnectedติดต่อกลับมิฉะนั้นคุณจะได้รับIllegalStateExceptionเนื่องจากคุณจะพยายามขอตำแหน่งโดยไม่ต้องเชื่อมต่อกับ Google Play Services Client

  • ผู้ใช้ปิดใช้งานบริการตำแหน่ง

หลายครั้งที่ผู้ใช้ปิดใช้งานบริการระบุตำแหน่ง (เพื่อประหยัดแบตเตอรี่หรือเหตุผลด้านความเป็นส่วนตัว) ในกรณีดังกล่าวรหัสด้านบนจะยังคงร้องขอการอัปเดตตำแหน่ง แต่onLocationChangedจะไม่ถูกเรียก คุณสามารถหยุดคำขอได้โดยตรวจสอบว่าผู้ใช้ปิดใช้งานบริการระบุตำแหน่งหรือไม่

หากแอปของคุณต้องการให้เปิดใช้งานบริการระบุตำแหน่งคุณจะต้องแสดงข้อความหรือขนมปังปิ้ง ขออภัยไม่มีวิธีตรวจสอบว่าผู้ใช้ปิดใช้งานบริการระบุตำแหน่งใน API บริการตำแหน่งของ Google หรือไม่ สำหรับสิ่งนี้คุณจะต้องหันกลับไปใช้ API ของ Android

ในonCreateวิธีการของคุณ:

    LocationManager manager = (LocationManager) getActivity().getSystemService(Context.LOCATION_SERVICE);
if (!manager.isProviderEnabled(LocationManager.GPS_PROVIDER) && !manager.isProviderEnabled(LocationManager.NETWORK_PROVIDER)) {
    locationEnabled = false;
    Toast.makeText(getActivity(), "Enable location services for accurate data", Toast.LENGTH_SHORT).show();
}
else locationEnabled = true;

และใช้การlocationEnabledตั้งค่าสถานะในonConnectedวิธีการของคุณเช่นนี้:

    if (location != null) {
    Toast.makeText(getActivity(), "Location: " + location.getLatitude() + ", " + location.getLongitude(), Toast.LENGTH_SHORT).show();
}
else if (location == null && locationEnabled) {
    locationClient.requestLocationUpdates(locationRequest, this);
}

UPDATE

อัปเดตเอกสารแล้ว LocationClient จะถูกลบออกและ api รองรับเพื่อเปิดใช้งาน GPS ด้วยการคลิกเพียงครั้งเดียวจากกล่องโต้ตอบ:

task.addOnSuccessListener(this, new OnSuccessListener<LocationSettingsResponse>() {
@Override
public void onSuccess(LocationSettingsResponse locationSettingsResponse) {
    // All location settings are satisfied. The client can initialize
    // location requests here.
    // ...
}
});

task.addOnFailureListener(this, new OnFailureListener() {
    @Override
    public void onFailure(@NonNull Exception e) {
        if (e instanceof ResolvableApiException) {
            // Location settings are not satisfied, but this can be fixed
            // by showing the user a dialog.
            try {
                // Show the dialog by calling startResolutionForResult(),
                // and check the result in onActivityResult().
                ResolvableApiException resolvable = (ResolvableApiException) e;
                resolvable.startResolutionForResult(MainActivity.this,
                        REQUEST_CHECK_SETTINGS);
            } catch (IntentSender.SendIntentException sendEx) {
                // Ignore the error.
            }
        }
    }
});

ลิงก์https://developer.android.com/training/location/change-location-settings#prompt

ที่ตั้งลูกค้าใหม่: FusedLocationProviderClient

  private FusedLocationProviderClient fusedLocationClient;

@Override
protected void onCreate(Bundle savedInstanceState) {
    fusedLocationClient = LocationServices.getFusedLocationProviderClient(this);
}

ขอแนะนำให้ไปที่https://developer.android.com/training/locationก่อนที่จะทำงานเกี่ยวกับตำแหน่ง


9
คุณสามารถใช้SettingsApi.checkLocationSettings()เพื่อตรวจสอบว่าผู้ใช้เปิดใช้งานบริการตำแหน่งหรือไม่ (ดูที่นี่: developers.google.com/android/reference/com/google/android/gms/… )
kaolick

3
LocationClient ไม่มีอยู่อีกต่อไป สำหรับคำแนะนำที่อัปเดตและชัดเจนสำหรับตำแหน่งโปรดตรวจสอบบทความนี้: blog.teamtreehouse.com/beginners-guide-location-android
lm2a

1
และหน้าการฝึกอบรมพร้อมตัวอย่าง SettingsApi: developer.android.com/training/location/…
androidguy

2
คุณยังสามารถสร้างรั้วทางภูมิศาสตร์โดยใช้LocationManager! API ตำแหน่งหลอมรวมทำงานบนอุปกรณ์ที่ไม่มีบริการ Google Play หรือไม่
มูฮัมหมัดบาบา

นี่เป็นอีกวิธีที่ดีกว่าในการตรวจสอบสถานะเปิด / ปิดการใช้งาน GPS fun isLocationEnabled(context: Context): Boolean { val locationMode: Int try { locationMode = Settings.Secure.getInt( context.contentResolver, Settings.Secure.LOCATION_MODE ) } catch (e: SettingNotFoundException) { e.printStackTrace() return false } return locationMode != Settings.Secure.LOCATION_MODE_OFF }
Wahib Ul Haq

32

จากประสบการณ์ของฉัน "ความแม่นยำที่เหมาะสมยิ่งขึ้น" ไม่ได้แปลว่าดีขึ้น แต่อย่างใด หากฉันไม่มีสิ่งใดหายไปถ้าคุณต้องการแน่ใจว่าใช้ GPS แล้ว LocationManager เป็นวิธีเดียวที่จะไป เราติดตามยานพาหนะด้วยแอพของเราและอีกครั้งเว้นแต่ฉันจะทำบางสิ่งบางอย่าง Google Play Services ให้สถานที่ที่ไม่ถูกต้องบ่อยครั้ง


2
ใช่จากประสบการณ์ของฉันบริการ Google Play บางครั้งให้ตำแหน่งที่ไม่ถูกต้อง
VY

2
ใช่ API บริการตำแหน่งของ Google Play Services สามารถให้ข้อมูลตำแหน่งที่ทำให้เข้าใจผิดมาก โมเด็ม WiFi ถูกย้ายโมเด็ม WiFi ได้รับการอัปเดตด้วยข้อมูลตำแหน่งที่ไม่ถูกต้อง (เช่นหากตำแหน่งถูกปลอมแปลงโดยอุปกรณ์ Android ที่อัปเดตตำแหน่งของโมเด็ม WiFi) และมีโฮสต์ของสถานการณ์อื่น ๆ ที่อาจส่งผลให้ข้อมูลตำแหน่งไม่ถูกต้อง ในแอพทั้งหมดของเราที่จำเป็นต้องระบุตำแหน่งอย่างแม่นยำเราใช้ GPS เท่านั้น
user1608385

27

คุณควรใช้ API ตำแหน่ง Google Play Services แทน LocationManager ตามเอกสาร:

API ตำแหน่งบริการของ Google Play นั้นเป็นที่ต้องการเหนือ API ตำแหน่งเฟรมเวิร์ก Android (android.location) เพื่อเพิ่มการรับรู้ตำแหน่งในแอปของคุณ หากคุณกำลังใช้ API ตำแหน่งเฟรมเวิร์ก Android ขอแนะนำให้คุณเปลี่ยนไปใช้ API ตำแหน่งบริการ Google Play โดยเร็วที่สุด

ทำไมถึงต้องเปลี่ยน Google พูดว่า:

Google Location Services API ซึ่งเป็นส่วนหนึ่งของ Google Play Services มอบกรอบงานระดับสูงที่มีประสิทธิภาพยิ่งขึ้นซึ่งจัดการผู้ให้บริการตำแหน่งการเคลื่อนไหวของผู้ใช้และความแม่นยำของตำแหน่งโดยอัตโนมัติ นอกจากนี้ยังจัดการการตั้งเวลาการอัปเดตตำแหน่งตามพารามิเตอร์การใช้พลังงานที่คุณให้ไว้ ในกรณีส่วนใหญ่คุณจะได้รับประสิทธิภาพแบตเตอรี่ที่ดีขึ้นรวมถึงความแม่นยำที่เหมาะสมยิ่งขึ้นโดยใช้ Location Services API


2
คุณมีลิงค์ไปยังเอกสารที่คำพูดเหล่านี้มาจากไหน? เป็นที่น่าสนใจที่จะดูว่า Google กำลังพูดอะไรที่แตกต่างในขณะนี้
Edward Brey

3
แน่นอนพวกเขาพูดแบบนี้เพราะพวกเขาต้องการข้อมูลตำแหน่งของคุณ!
Flyview

เมื่อคุณเพิ่มบริการ Google Play ลงในแอปของคุณหากผู้ใช้ติดตั้งแอปของคุณเขาจะได้รับแจ้งให้ "อัปเดต" บริการ Google Play เพื่อใช้แอปของคุณ ในกรณีที่โทรศัพท์ของเขา / เธอใกล้เต็ม (มีมส์และอะไร whatsapp) หรือผู้ใช้ไม่มีข้อมูลขออภัยเพื่อนของคุณ
Dr Deo

2
@Flyview อ๋อ! ฮ่าฮ่าวิธีที่พวกเขาพูดมันทำให้ดูเหมือนว่ามันเป็นทางออกที่วิเศษ! ข้อเสียเปรียบที่ยิ่งใหญ่ที่สุดคือคุณต้องมีบริการ Google Play บนอุปกรณ์ !!!
varun

25

ฉันใช้ Google Location Services API มาระยะหนึ่งแล้ว มันมีข้อดีเนื่องจากมันครอบคลุมความซับซ้อนของการมีหลายแหล่งสำหรับการกำหนดตำแหน่ง อย่างไรก็ตามมันห่อหุ้มอย่างหนักเกินไปดังนั้นเมื่อคุณได้รับตำแหน่งที่แปลกประหลาดคุณไม่มีทางกำหนดตำแหน่งที่แปลกนั้นมาได้

ในชีวิตจริงฉันมีค่าประหลาดหลายอย่างปรากฏขึ้นเป็น 10 กิโลเมตรจากตำแหน่งจริง คำอธิบายเดียวคือที่ตั้งที่บ้าคลั่งเหล่านี้เกิดจากข้อผิดพลาดในฐานข้อมูล Googles Wi-Fi หรือ NWK - ข้อผิดพลาดซึ่งมักจะมีอยู่เนื่องจาก Wi-Fi และโครงสร้างเครือข่ายเปลี่ยนแปลงทุกวัน แต่น่าเสียดายที่ (และน่าประหลาดใจ) API ไม่ได้ให้ข้อมูลเกี่ยวกับวิธีการรับตำแหน่งแต่ละตำแหน่ง

ป้อนคำอธิบายรูปภาพที่นี่

สิ่งนี้ทำให้คุณมีปัญหาในการกรองค่าประหลาดจากการตรวจสอบความน่าเชื่อถือเกี่ยวกับความเร็วการเร่งความเร็วการแบก ฯลฯ

... หรือกลับไปที่ API เฟรมเวิร์กเก่าที่ดีและใช้ GPS เท่านั้นซึ่งเป็นสิ่งที่ฉันตัดสินใจทำจนกว่า Google จะปรับปรุง API ที่หลอมรวม


7

ตำแหน่งของ Google บริการ APIซึ่งเป็นส่วนหนึ่งของการใช้บริการ Google Play ให้มีประสิทธิภาพมากขึ้นกรอบระดับสูงที่จะจัดการกับผู้ให้บริการสถานที่ตั้ง ,การเคลื่อนไหวของผู้ใช้และความแม่นยำของตำแหน่ง นอกจากนี้ยังจัดการการตั้งเวลาการอัปเดตตำแหน่งตามพารามิเตอร์การใช้พลังงานที่คุณระบุ ในกรณีส่วนใหญ่คุณจะได้รับประสิทธิภาพแบตเตอรี่ที่ดีขึ้นรวมถึงความแม่นยำที่เหมาะสมยิ่งขึ้นโดยใช้ Location Services API

ความแตกต่างของรายละเอียดเพิ่มเติมระหว่างAPI ตำแหน่งของ Google Play Service APIกับAndroid Framework Location APIสามารถพบได้ที่นี่


ฉันใช้คำตอบของคุณเพื่อตอบคำถามของตัวเองถ้าไม่เป็นไร ขอบคุณมาก! stackoverflow.com/questions/39852955/…
Leniaal

@Leniaal ดังนั้นคุณไม่คิดว่าคำตอบของฉันควรได้รับการโหวตหรือไม่
Dhruvam Gupta

นั่นคือเอกสารเก่า 3 ปี แต่นี่คือข้อดี 1
ดึง

5

ใช่ API บริการตำแหน่งของ Google Play Services สามารถให้ข้อมูลตำแหน่งที่ทำให้เข้าใจผิดมาก โมเด็ม WiFi ถูกย้ายโมเด็ม WiFi ได้รับการอัปเดตด้วยข้อมูลตำแหน่งที่ไม่ถูกต้อง (เช่นหากตำแหน่งถูกปลอมแปลงโดยอุปกรณ์ Android ที่อัปเดตตำแหน่งของโมเด็ม WiFi) และมีโฮสต์ของสถานการณ์อื่น ๆ ที่อาจส่งผลให้ข้อมูลตำแหน่งไม่ถูกต้อง ในแอพทั้งหมดของเราที่จำเป็นต้องระบุตำแหน่งอย่างแม่นยำเราใช้ GPS เท่านั้น


3

ความแตกต่างระหว่าง API ตำแหน่งของ Google Play Service API และ Android Framework Location API API ที่อิงตามบริการ GPS

FusedLocationProviderClient

  1. สำหรับการดึงข้อมูลครั้งที่ 1 ตำแหน่งจะต้องไม่เป็นโมฆะ (เช่น: แอปอื่น ๆ จำเป็นต้องอัปเดตตำแหน่งล่าสุดที่รู้จักในฐานข้อมูล GoogleplayService หากเป็นโมฆะต้องแก้ไข)
  2. สำหรับการดึงข้อมูลลำดับถัดไปจะใช้requestLocationUpdates()วิธีการดึงข้อมูลตำแหน่ง
  3. การดึงข้อมูลตำแหน่งขึ้นอยู่กับlocationRequest.setInterval(milliseconds)และsetFastestInterval(milliseconds)ไม่ได้ขึ้นอยู่กับการเปลี่ยนตำแหน่งของผู้ใช้
  4. ค่า LatLng ที่ส่งคืนมีค่าทศนิยมเพียง 7 ค่า (เช่น: 11.9557996, 79.8234599) ไม่ถูกต้อง
  5. แนะนำเมื่อความต้องการแอปของคุณใช้ระยะทางตำแหน่งปัจจุบันเล็กน้อย (ความแม่นยำ 50 - 100 เมตร)
  6. มีประสิทธิภาพในการใช้งานแบตเตอรี่

LocationManager Api

  1. การดึงข้อมูลตำแหน่งของผู้ใช้ถูกเรียกใช้โดยใช้ locationManager.requestLocationUpdates ()
  2. การดึงข้อมูลตำแหน่งขึ้นอยู่กับการเปลี่ยนตำแหน่งของผู้ใช้และช่วงเวลา locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, milliseconds, mindistance, Mylocationlistener)

  3. ค่า LatLng ที่ส่งคืนมีค่าทศนิยม 14 ค่า (เช่น: 11.94574594963342 79.81166719458997) ค่าตำแหน่งที่ถูกต้อง

  4. แนะนำให้ใช้กับแอพตามพื้นที่เมื่อต้องการความแม่นยำมากขึ้นแม้เป็นหน่วยเมตร
  5. การใช้แบตเตอรี่ขึ้นอยู่กับช่วงเวลาการดึงข้อมูลและระยะทางในการดึงข้อมูล

เฮ้! 1 °มีความยาวสูงสุด 111_111 เมตร (20_000_000 / 180) ดังนั้น 0.0000001 °คือ 0.011m = 1 ซม. ฉันไม่รู้ว่าคุณต้องการความละเอียด GPS ที่ดีกว่าที่ไหน และฉันไม่รู้ด้วยซ้ำว่าคุณจะมีความละเอียด GPS ที่ดีขึ้นได้อย่างไร
babay
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.