نقل البيانات من ميزة "المكان الحالي" (القديمة) إلى ميزة "البحث عن أماكن قريبة" (الجديدة)

المطوّرون في المنطقة الاقتصادية الأوروبية

تتيح حزمة تطوير برامج الأماكن لأجهزة Android (الإصدار القديم) استخدام خدمة "الموقع الجغرافي الحالي" (الإصدار القديم). إذا كنت معتادًا على استخدام ميزة "الموقع الجغرافي الحالي" (الإصدار القديم)، ستلاحظ التغييرات التالية في ميزة بحث في الجوار (الإصدار الجديد):

  • يستخدم نموذج أسعار جديدًا. للاطّلاع على معلومات الأسعار الخاصة بجميع واجهات برمجة التطبيقات، يُرجى الرجوع إلى Places SDK لنظام التشغيل Android (الإصدار الجديد).

  • يجب تهيئة تطبيقك من خلال استدعاء الطريقة Places.initializeWithNewPlacesApiEnabled(). لمزيد من المعلومات حول اختيار خدمة Places API، يُرجى الاطّلاع على إعداد مشروعك على Google Cloud.

  • يجب إخفاء الحقل. يجب تحديد الحقول المطلوب عرضها في الرد. لا توجد قائمة تلقائية بالحقول التي يتم عرضها. إذا حذفت هذه القائمة، ستعرض الطرق خطأ.

  • لا يتيح "بحث في الجوار" (الجديد) استخدام PlaceLikelihood. باستخدام ميزة "بحث في الجوار" (الجديدة)، يمكنك استخدام ترتيب النتائج لتحديد الموقع الجغرافي الأكثر صلة.

أمثلة على ميزة "البحث في الجوار" (الجديدة)

لمزيد من المعلومات، بالإضافة إلى أمثلة حول كيفية استخدام بحث في الجوار (جديد)، يُرجى الاطّلاع على مستندات بحث في الجوار (جديد).

استخدام ميزة "بحث في الجوار" (جديدة) للحصول على المكان الحالي

يوضّح المثال التالي كيفية الحصول على المكان الحالي باستخدام بحث في الجوار (جديد) من خلال استبدال استخدام PlacesClient.findCurrentPlace() بـ PlacesClient.searchNearby():

public class MainActivity 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, 100);
                List<Place.Field> placeFields = Arrays.asList(Place.Field.ID, Place.Field.DISPLAY_NAME);

                // Define a list of types to exclude. Adjust this list to suit each application.
                final List<String> excludedTypes = Arrays.asList("public_bathroom", "beach");

                SearchNearbyRequest request
                        = SearchNearbyRequest.builder(/* location restriction = */ circle, placeFields)
                                .setExcludedTypes(excludedTypes)
                                .setRankPreference(SearchNearbyRequest.RankPreference.DISTANCE)
                                .build();

                placesClient
                    .searchNearby(request)
                    .addOnSuccessListener(
                        response -> {
                            List<Place> places = response.getPlaces();
                            // do more on the results
                        })
                    .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);
    }

  }
}