مهاجرت از مکان فعلی (قدمتی) به جستجوی نزدیک (جدید)

توسعه دهندگان منطقه اقتصادی اروپا (EEA).

Places SDK for Android (Legacy) از Current Place (Legacy) پشتیبانی می کند. اگر با مکان فعلی (میراث) آشنا هستید، جستجوی نزدیک (جدید) تغییرات زیر را انجام می دهد:

  • از مدل قیمت گذاری جدید استفاده می کند. برای اطلاعات قیمت برای همه APIها، Places SDK for Android (جدید) را ببینید.

  • باید با فراخوانی متد Places.initializeWithNewPlacesApiEnabled() برنامه خود را مقداردهی اولیه کنید. برای اطلاعات بیشتر در مورد انتخاب سرویس Places API، به راه اندازی پروژه Google Cloud خود مراجعه کنید.

  • پوشاندن میدان مورد نیاز است. شما باید مشخص کنید که کدام فیلدها را می خواهید در پاسخ بازگردانید. هیچ لیست پیش فرضی از فیلدهای برگشتی وجود ندارد. اگر این لیست را حذف کنید، متدها با خطا مواجه می شوند.

  • جستجوی نزدیک (جدید) از PlaceLikelihood پشتیبانی نمی‌کند. با جستجوی نزدیک (جدید)، می‌توانید از ترتیب نتیجه برای تعیین محتمل‌ترین مکان استفاده کنید.

نمونه‌های جستجوی نزدیک (جدید).

برای اطلاعات بیشتر و همچنین نمونه‌هایی از نحوه استفاده از جستجوی اطراف (جدید)، به مستندات جستجوی اطراف (جدید) مراجعه کنید.

از جستجوی نزدیک (جدید) برای دریافت مکان فعلی استفاده کنید

نمونه زیر نحوه دریافت مکان فعلی با جستجوی Nearby (جدید) را با جایگزین کردن استفاده از PlacesClient.findCurrentPlace() PlacesClient.searchNearby() نشان می‌دهد:

public class MainActivity extends extends AppCompatActivity {

  private FusedLocationProviderClient fusedLocationProviderClient;

  @Override
  protected void onCreate(@Nullable Bundle savedInstanceState) {
    // ...

    // get permission
    if (ContextCompat.checkSelfPermission(this,
        Manifest.permission.ACCESS_FINE_LOCATION)
        == PackageManager.PERMISSION_GRANTED) {

      // get location and search
      fusedLocationProviderClient
        .getLastLocation()
        .addOnSuccessListener(
            this,
            location -> {
              if (location != null) {
                LatLng latLng = new LatLng(location.getLatitude(), location.getLongitude());
                CircularBounds circle = CircularBounds.newInstance(latLng, 10);
                List<Place.Field> placeFields = Arrays.asList(Place.Field.ID, Place.Field.DISPLAY_NAME);

                SearchNearbyRequest.Builder request = SearchNearbyRequest.builder(circle, placeFields);

                placesClient
                    .searchNearby(request.build())
                    .addOnSuccessListener(response ->
List<Place> places = response.getPlaces();)
                    .addOnFailureListener(
                        exception -> {
                          // handle failure
                        });
              } else {
                // failed to get location.
              }
            })
        .addOnFailureListener(
            e -> {
              // handle error
            });

    } else {
      ActivityCompat.requestPermissions(
          this,
          new String[] {Manifest.permission.ACCESS_FINE_LOCATION},
          PERMISSION_REQUEST_CODE);
    }

  }
}