نظرة عامة
تتوفّر "منصة خرائط Google" للويب (JS وTS) وAndroid وiOS. وتوفر أيضًا واجهات برمجة تطبيقات لخدمات الويب للحصول على معلومات عن الأماكن والاتجاهات والمسافات. النماذج الواردة في هذا الدليل مكتوبة لمنصة واحدة، ولكن يتم توفير روابط التوثيق لتنفيذها على منصات أخرى.
أداة إنشاء سريعة في Google Cloud Console إمكانية إنشاء ميزة الإكمال التلقائي لنموذج العناوين واجهة مستخدم تفاعلية تُنشئ رمز JavaScript لك.
لقد اعتاد المستخدمون على العيش والعمل في عالم رقمي التي تكون فيها الراحة والسرعة والأمان توقعات أساسية. عندما يقدّمون طلبات للحصول على شيء مثل بطاقة ائتمان أو حساب مصرفي أو قرض يتوقع أن تكون العملية سريعة وسهلة.
كلما زاد عدد المستخدمين الذين يتعين عليهم كتابة بيانات مكررة أو إدخالها، قلت فرصة لديك في الاحتفاظ بهم كعملاء. يعد إنشاء مخطط سريع وسهل تجربة تسجيل الدخول المتحقق منه إلى تحسين تجربة المستخدم مما يمنحك حظًا في جذب اهتمام المستخدمين على موقعك.
يمكن أن تؤدي العناوين المدخلة يدويًا إلى انخفاض الإحالات الناجحة، أو وجود أخطاء بيانات إدارة علاقات العملاء وأخطاء التسليم المكلفة. سريعة & الاشتراك الذي تم التحقق منه يؤدي إلى الاشتراك أسرع، وتقترح العناوين القريبة بشكل فوري ببضع نقرات فقط يعرض العنوان الذي تم إدخاله للتأكيد المرئي، ما يساعد المستخدم الثقة بأنهم أدخلوا العنوان الصحيح. جارٍ التحقق من يساعد أيضًا عنوان المستخدم الذي يستخدم موقعه الجغرافي الحالي في منع الاحتيال وتعزز ثقة المستخدم في منتجاتك وخدماتك. ويمكن أن يؤدي التحقق أيضًا إلى تعزيز ثقتك في تقديم خدمات المصرفية وبطاقات الائتمان على الفور.
يقدم هذا الموضوع إرشادات حول التنفيذ من أجل إنشاء مخطط استجابة سريعة اشتراك تم التحقق منه المستخدم مع "منصة خرائط Google". نظرًا لأنه من المرجح أن الاشتراك على الأجهزة الجوّالة، فإن معظم الأمثلة على التنفيذ في الموضوع على Android (يمكنك مشاهدة النموذج الكامل للمصدر هنا). يمكنك أيضًا استخدام حِزم تطوير البرامج (SDK) لنظام التشغيل iOS لإنجاز المهام نفسها.
يوضّح المخطّط التالي واجهات برمجة التطبيقات الأساسية المُستخدَمة في إنشاء الحلّ. (انقر للتكبير).
تمكين واجهات برمجة التطبيقات
لتنفيذ هذه الاقتراحات، يجب تفعيل واجهات برمجة التطبيقات التالية في وحدة التحكّم في Google Cloud:
- حزمة تطوير البرامج بالاستناد إلى بيانات "خرائط Google" لتطبيقات Android (أو واجهة برمجة التطبيقات للنظام الأساسي الذي تختاره)
- Places API
- Geocoding API
لمزيد من المعلومات عن الإعداد، راجع الحصول على باستخدام Google Maps Platform.
أقسام أفضل الممارسات
في ما يلي الممارسات والتخصيصات التي سنتناولها في هذا الموضوع.
- يعد رمز علامة الاختيار من أفضل الممارسات الأساسية.
- رمز النجمة اختياري ولكنه يوصى به التخصيص لتحسين الحل.
إضافة ميزة الإكمال التلقائي إلى حقول الإدخال | ملء نموذج عنوان تلقائيًا إضافة وظيفة "الكتابة أثناء التنقل" إلى تحسين تجربة المستخدم على كل المنصات وتحسين العنوان الدقة بالحد الأدنى من ضغطات المفاتيح. | |
توفير تأكيد مرئي للعنوان | السماح للمستخدمين برؤية عنوانهم على الخريطة كتأكيد مرئي أنه أدخل العنوان الصحيح. | |
مقارنة العنوان الذي أدخله المستخدم بالموقع الجغرافي للجهاز | المقارنة بين العنوان الذي اختاره المستخدم أو إدخاله الموقع الحالي للجهاز للمساعدة في تحديد أنهم في العنوان المشار إليه. (لتنفيذ ذلك، يجب أن يكون المستخدمون في المنزل عند اشتراكه). | |
نصائح لتحسين "السريعة" اشتراك تم التحقّق منه | يمكنك تحسين إدخال العنوان بشكل أكبر باستخدام إضافات مثل مثل تخصيص شكل ومظهر أداة الإكمال التلقائي أو ويسمح للمستخدمين بتحديد اسم نشاط تجاري أو معلم باعتباره الخاص بك. |
إضافة ميزة "الإكمال التلقائي" إلى حقول الإدخال
يستخدم هذا المثال ما يلي: حزمة تطوير برامج الأماكن لأجهزة Android | متوفّر أيضًا: iOS | JavaScript |
يمكن أن تساعد ميزة "الإكمال التلقائي" في تبسيط إدخال العنوان في تطبيقك، لتحقيق معدلات إحالات ناجحة أعلى وتقديم تجربة سلسة لعملائك. توفر ميزة الإكمال التلقائي حقلاً واحدًا لإدخال سريع مع خيار "الكتابة المسبقة". الْعِنْوَانْ التنبؤ الذي يمكن استخدامه لملء نموذج عنوان الاشتراك تلقائيًا. من خلال دمج ميزة الإكمال التلقائي للأماكن في عملية الاشتراك، يمكنك:
- يمكنك الحدّ من أخطاء إدخال العناوين.
- يُرجى تقليل عدد خطوات عملية الاشتراك.
- تبسيط تجربة إدخال العنوان على الأجهزة الجوّالة أو الأجهزة القابلة للارتداء.
- يمكنك تقليل ضغطات المفاتيح وتقليل الوقت الإجمالي اللازم للاشتراك.
عندما يحدد المستخدم مربع الإدخال الإكمال التلقائي ويبدأ في الكتابة، ستظهر قائمة من تنبؤات العناوين.
عندما يختار المستخدم عنوانًا من قائمة عبارات البحث المقترحة، يمكنك استخدام الرد للتحقق من العنوان والحصول على الموقع. تطبيقك يمكنك بعد ذلك ملء الحقول الصحيحة في نموذج إدخال العنوان، كما هو موضح في الشكل التالي.
الفيديوهات: تحسين نماذج العناوين باستخدام ميزة "الإكمال التلقائي" للأماكن
نماذج العناوين
Android
iOS
الويب
توفّر "منصة خرائط Google" أداة "الإكمال التلقائي" للأماكن للأجهزة الجوّالة المنصات والويب. يقدم التطبيق المصغّر الموضح في الأشكال السابقة للبحث مع وظيفة الإكمال التلقائي المضمنة التي يمكنك تحسين البحث على مستوى الموقع الجغرافي.
يصف هذا القسم كيفية تنفيذ ميزة الإكمال التلقائي للأماكن من أجل Quick & اشتراك تم التحقق منه.
إضافة أداة الإكمال التلقائي للأماكن
في Android، يمكنك إضافة أداة الإكمال التلقائي باستخدام الإكمال التلقائي حسب النية بالشراء تقوم بتشغيل الإكمال التلقائي للأماكن من حقل إدخال سطر العنوان 1، حيث سيبدأ المستخدم في إدخال عنوانه. عندما يبدأون في الكتابة، سيكون بإمكانهم اختيار عناوينهم من قائمة توقعات الإكمال التلقائي.
أولاً، عليك إعداد مشغّل الأنشطة، باستخدام
ActivityResultLauncher
,
الذي يستمع إلى نتيجة
من النشاط الذي تم إطلاقه. ستحتوي نتيجة معاودة الاتصال على كائن مكان
المتوافق مع العنوان الذي يختاره المستخدم من الإكمال التلقائي
والتنبؤات.
private final ActivityResultLauncher<Intent> startAutocomplete = registerForActivityResult( new ActivityResultContracts.StartActivityForResult(), result -> { if (result.getResultCode() == Activity.RESULT_OK) { Intent intent = result.getData(); if (intent != null) { Place place = Autocomplete.getPlaceFromIntent(intent); // Write a method to read the address components from the Place // and populate the form with the address components Log.d(TAG, "Place: " + place.getAddressComponents()); fillInAddress(place); } } else if (result.getResultCode() == Activity.RESULT_CANCELED) { // The user canceled the operation. Log.i(TAG, "User canceled autocomplete"); } });
بعد ذلك، حدد الحقول والمكان ونوع خصائص
إضافة هدف "الإكمال التلقائي" وإنشاءه باستخدام
Autocomplete.IntentBuilder
أخيرًا، يمكنك إطلاق intent باستخدام ActivityResultLauncher
المحدّد في
عينة التعليمات البرمجية السابقة.
private void startAutocompleteIntent() { // Set the fields to specify which types of place data to // return after the user has made a selection. List<Place.Field> fields = Arrays.asList(Place.Field.ADDRESS_COMPONENTS, Place.Field.LAT_LNG, Place.Field.VIEWPORT); // Build the autocomplete intent with field, country, and type filters applied Intent intent = new Autocomplete.IntentBuilder(AutocompleteActivityMode.OVERLAY, fields) .setCountries(Arrays.asList("US")) .setTypesFilter(new ArrayList<String>() {{ add(TypeFilter.ADDRESS.toString().toLowerCase()); }}) .build(this); startAutocomplete.launch(intent); }
التعامل مع العنوان الذي تعرضه ميزة "الإكمال التلقائي" للأماكن
تحديد ActivityResultLauncher
في وقت سابق يحدد أيضًا ما ينبغي أن يكون
يتم إجراؤه عند إرجاع نتيجة النشاط في معاودة الاتصال. إذا كان المستخدم
حدد تنبؤًا، فسيتم عرضه في الغرض المضمن في
كائن النتيجة. بما أنّ الغرض من إنشاء Autocomplete.IntentBuilder
،
يمكن للطريقة Autocomplete.getPlaceFromIntent()
استخراج كائن Place
منه.
private final ActivityResultLauncher<Intent> startAutocomplete = registerForActivityResult( new ActivityResultContracts.StartActivityForResult(), result -> { if (result.getResultCode() == Activity.RESULT_OK) { Intent intent = result.getData(); if (intent != null) { Place place = Autocomplete.getPlaceFromIntent(intent); // Write a method to read the address components from the Place // and populate the form with the address components Log.d(TAG, "Place: " + place.getAddressComponents()); fillInAddress(place); } } else if (result.getResultCode() == Activity.RESULT_CANCELED) { // The user canceled the operation. Log.i(TAG, "User canceled autocomplete"); } });
يمكنك من هناك الاتصال برقم Place.getAddressComponents()
ومطابقته مع كل عنوان.
إلى حقل الإدخال المقابل له في نموذج العنوان، لتعبئة
بالقيمة من المكان الذي حدده المستخدم.
التقاط بيانات العنوان من التنبؤ بدلاً من البيانات المُدخلة يدويًا عنوانك على ضمان دقة العنوان، ويضمن أن يكون العنوان معروفًا تسليمه، ويقلل من ضغطات مفاتيح المستخدم.
الاعتبارات الواجب مراعاتها عند تنفيذ الإكمال التلقائي للأماكن
تحتوي ميزة الإكمال التلقائي على عدد من الخيارات التي تتيح لك المرونة تنفيذها إذا كنت تريد استخدام أكثر من الأداة فقط. يمكنك استخدام مزيج من الخدمات للحصول على ما تحتاجه بالضبط لمطابقة موقع جغرافي بالطريقة الصحيحة.
بالنسبة إلى نموذج ADDRESS، اضبط معلمة الأنواع على
address
لتقييد تطابق عناوين الشوارع الكاملة. مزيد من المعلومات حول الأنواع المتاحة في طلبات الإكمال التلقائي للأماكن.تحديد القيود والانحيازات المناسبة في حال لم تكن بحاجة إلى البحث في جميع أنحاء العالم هناك عدد من المعلمات التي يمكن استخدامها لتحيز أي مطابقة أو تقييدها لمناطق معينة فقط.
استخدِم
RectangularBounds
لضبط الحدود المستطيلة التي تريد فرض قيود عليها. منطقة، استخدمsetLocationRestriction()
للتأكد من أن العناوين فقط في وإرجاع هذه المناطق.استخدِم
setCountries()
لحصر الردود على مجموعة محدّدة من البلدان.
ترك الحقول قابلة للتعديل في حالة تفويت حقول معينة من المطابقة، والسماح للعملاء بتعديل العنوان إذا لزم الأمر. نظرًا لأن معظم العناوين التي تعرضها ميزة الإكمال التلقائي للأماكن، والتي لا تحتوي على أرقام الأجهزة الفرعية مثل أرقام الشقة أو الجناح أو الوحدة، يمكنك نقل التركيز إلى سطر العنوان رقم 2 لتشجيع المستخدم على ملء هذه المعلومات إذا لزم الأمر.
تقديم تأكيد مرئي للعنوان
يستخدم هذا المثال ما يلي: حزمة تطوير البرامج بالاستناد إلى بيانات "خرائط Google" لتطبيقات Android | متوفّر أيضًا: iOS | JavaScript |
وكجزء من إدخال العنوان، يجب تزويد المستخدمين بتأكيد مرئي على على الخريطة. وهذا يوفر للمستخدمين تأكيدًا إضافيًا بأن العنوان صحيح.
يعرض الشكل التالي خريطة أسفل العنوان مع دبوس على العنوان. مدخلاً.
يتبع المثال التالي الخطوات الأساسية لإضافة خريطة في Android. يُرجى مراجعة المستندات للاطّلاع على مزيد من التفاصيل.
- إضافة
SupportMapFragment
(في هذه الحالة، إضافة جزء بشكل ديناميكي) - الحصول على اسم معرِّف للجزء وتسجيل معاودة الاتصال
- تصميم محدِّد الموقع الجغرافي وإضافته إلى الخريطة
- إيقاف عناصر التحكّم في الخريطة
جارٍ إضافة "SupportMapFragment
".
أولاً، أضِف الجزء SupportMapFragment
إلى العنصر
ملف تنسيق XML.
<fragment android:name="com.google.android.gms.maps.SupportMapFragment" android:id="@+id/confirmation_map" android:layout_width="match_parent" android:layout_height="match_parent"/>
بعد ذلك، أضِف الجزء آليًا في حال لم يكن متوفّرًا بعد.
private void showMap(Place place) { coordinates = place.getLatLng(); // It isn't possible to set a fragment's id programmatically so we set a tag instead and // search for it using that. mapFragment = (SupportMapFragment) getSupportFragmentManager().findFragmentByTag(MAP_FRAGMENT_TAG); // We only create a fragment if it doesn't already exist. if (mapFragment == null) { mapPanel = ((ViewStub) findViewById(R.id.stub_map)).inflate(); GoogleMapOptions mapOptions = new GoogleMapOptions(); mapOptions.mapToolbarEnabled(false); // To programmatically add the map, we first create a SupportMapFragment. mapFragment = SupportMapFragment.newInstance(mapOptions); // Then we add it using a FragmentTransaction. getSupportFragmentManager() .beginTransaction() .add(R.id.confirmation_map, mapFragment, MAP_FRAGMENT_TAG) .commit(); mapFragment.getMapAsync(this); } else { updateMap(coordinates); } }
الحصول على اسم معرِّف للجزء وتسجيل معاودة الاتصال
للحصول على اسم معرِّف للجزء، يمكنك استدعاء دالة الرسم
FragmentManager.findFragmentById
وتمريره معرف المورد للجزء في ملف التخطيط. إذا أضفت الجزء بشكل ديناميكي، يمكنك تخطّي هذه الخطوة لأنّك سبق أن استرددت الاسم المعرِّف.يجب استدعاء الطريقة
getMapAsync
لضبط على الجزء.
على سبيل المثال، إذا أضفت الجزء بشكل ثابت:
Kotlin
val mapFragment = supportFragmentManager .findFragmentById(R.id.map) as SupportMapFragment mapFragment.getMapAsync(this)
Java
SupportMapFragment mapFragment = (SupportMapFragment) getSupportFragmentManager() .findFragmentById(R.id.map); mapFragment.getMapAsync(this);
تصميم وإضافة علامة إلى الخريطة
عندما تكون الخريطة جاهزة، اضبط النمط واجعل الكاميرا في منتصف الكاميرا وأضِف محدّد موقع على إحداثيات العنوان الذي تم إدخاله. تستخدم الكود التالي الأنماط هو محدد في كائن JSON أو يمكنك بدلاً من ذلك تحميل معرف خريطة يحتوي على تم تحديدها باستخدام أنماط الخرائط المستندة إلى السحابة الإلكترونية:
@Override public void onMapReady(@NonNull GoogleMap googleMap) { map = googleMap; try { // Customise the styling of the base map using a JSON object defined // in a string resource. boolean success = map.setMapStyle( MapStyleOptions.loadRawResourceStyle(this, R.raw.style_json)); if (!success) { Log.e(TAG, "Style parsing failed."); } } catch (Resources.NotFoundException e) { Log.e(TAG, "Can't find style. Error: ", e); } map.moveCamera(CameraUpdateFactory.newLatLngZoom(coordinates, 15f)); marker = map.addMarker(new MarkerOptions().position(coordinates)); }
(الاطّلاع على عيّنة الرموز الكاملة)
جارٍ إيقاف عناصر التحكم في الخريطة
لتبسيط الخريطة من خلال عرض الموقع بدون عناصر تحكم إضافية في الخريطة (مثل البوصلة أو شريط الأدوات أو الميزات المضمنة الأخرى)، جرّب تعطيل وعناصر التحكّم التي لم تجدها اللازمة. هناك خيار آخر على Android ألا وهو تفعيل الوضع البسيط لتوفير ميزات محدودة والتفاعل.
مقارنة العنوان الذي أدخله المستخدم بالموقع الجغرافي للجهاز
الحصول على إثبات العنوان - الثقة في أن المستخدم في العنوان الذي أدخله - قد يكون معقدًا بعوامل مثل الموقع الجغرافي للمستخدم أو انتقال المستخدمين إلى عنوان جديد أو الأنشطة التجارية الرقمية (مثل المصارف الرقمية) التي ليس لها موقع جغرافي يمكن للمستخدمين يمكن زيارته لتقديم إثبات على العنوان مع فواتير الخدمات أو غيرها التوثيق. يتيح توفير طرق رقمية للتحقق من عناوين المستخدمين على تقديم تجربة اشتراك أسرع وسلسة
التحقق من العنوان أمر بالغ الأهمية، خاصةً مع عملية تسجيل الاشتراك. يقدّم هذا القسم إرشادات وعيّنات يمكن التحقّق منها. ما إذا كان الموقع الجغرافي للمستخدم أثناء الاشتراك يتطابق مع العنوان الذي أدخله بأنفسهم.
تتضمن عملية مقارنة عنوان تم إدخاله بموقع جهاز ما الخطوات التالية:
- تحويل العنوان الذي أدخله المستخدم إلى إحداثيات جغرافية
- طلب إذن من المستخدم للحصول على الموقع الجغرافي للجهاز
- احتساب المسافة بين العنوان الذي تم إدخاله وموقع الجهاز الجغرافي: يمكنك تحديد أقصى مسافة يتم احتسابها لمطابقة الموقع الجغرافي للعنوان.
يمثّل الشكل التالي مثالاً على كيفية مطالبة المستخدمين بإجراء مقارنة العنوان الذي أدخله إلى موقعه الحالي.
تحويل العنوان الذي أدخله المستخدم إلى إحداثيات جغرافية
يستخدم هذا المثال ما يلي: حزمة تطوير برامج الأماكن لأجهزة Android | متوفّر أيضًا: iOS | JavaScript | واجهة برمجة التطبيقات للترميز الجغرافي |
بعد موافقة المستخدمين على التحقق من العنوان (عن طريق لمس "التحقق من أنني موجود الآن" في الشكل السابق)، فإن الخطوة الأولى في مقارنة العنوان مع الموقع هو تحويل العنوان الذي تم إدخاله إلى إحداثيات جغرافية.
إذا اختار المستخدم عنوانه باستخدام ميزة "الإكمال التلقائي" للأماكن، تأكَّد من تقديم طلب
Place.Field.LAT_LNG
في قائمة حقول "الإكمال التلقائي" للأماكن كما هو موضّح في
إضافة أداة الإكمال التلقائي للأماكن، ثم الاتصال
Place.getLatLng()
للحصول على الإحداثيات الجغرافية للعنوان المحدد.
coordinates = place.getLatLng();
إذا أدخل المستخدم عنوانه يدويًا أو أجرى تعديلات بعد المكان ملأت ميزة الإكمال التلقائي الحقول، فاستخدم خدمة الترميز الجغرافي على Android أو Geocoding API للبحث عن الإحداثيات التي تتوافق مع هذا العنوان.
مثال
https://maps.googleapis.com/maps/api/geocode/json?address=1600%20Amphitheatre%2BParkway%2C%20Mountain%20View%2C%20CA%2094043&key=YOUR_API_KEY
احرص على ترميز عنوان URL. طلب واجهة برمجة تطبيقات Geocoding.
المرجع السريع لترميز عناوين URL: %20
= مسافة، %2B
= + (علامة الجمع)، %2C
= ، (فاصلة)
طلب الإذن من المستخدم للحصول على الموقع الجغرافي للجهاز
لمعرفة الموقع الجغرافي لجهاز المستخدم، عليك طلب إذن المستخدم لتنفيذ ما يلي: تفعيل خدمات الموقع الجغرافي بالاستعانة بالإرشادات الواردة في وثائق Android بشأن إنشاء تطبيقات تستنِد إلى الموقع الجغرافي تنفيذ التدفق التالي:
يمكنك طلب إذن تحديد الموقع الجغرافي على مستوى دقيق، كمنحة لمرة واحدة. (
ACCESS_FINE_LOCATION
).إذا منح المستخدم إذن الوصول إلى الموقع الجغرافي، احصل على الموقع الجغرافي للمستخدم.
إذا رفض المستخدم إذن الوصول إلى الموقع الجغرافي، تعامل مع الرفض على نحو ملائم. على سبيل المثال، يمكنك تقديم النوع التالي من الرسائل (بافتراض لا تخزن الموقع الحالي للمستخدم):
"إذا لم تسمح للتطبيق بمعرفة موقعك الدقيق، ستحتاج إلى إثبات الملكية عبر البريد لتفعيل حسابك. [حسنًا]"
يوضّح الشكل التالي مثالاً على طلب يطلب من المستخدمين منح الإذن الحصول على الموقع الجغرافي للجهاز
للتحقّق من إذن تحديد الموقع الجغرافي، عليك إعداد مشغّل أنشطة
الاستماع إلى نتيجة
من النشاط الذي تم إطلاقه مع
ActivityResultLauncher
وستحتوي نتيجة معاودة الاتصال على سلسلة تشير إلى ما إذا كان المستخدم قد منح
الإذن المطلوب أو رفضته.
// Register the permissions callback, which handles the user's response to the // system permissions dialog. Save the return value, an instance of // ActivityResultLauncher, as an instance variable. private final ActivityResultLauncher<String> requestPermissionLauncher = registerForActivityResult(new ActivityResultContracts.RequestPermission(), isGranted -> { if (isGranted) { // Since ACCESS_FINE_LOCATION is the only permission in this sample, // run the location comparison task once permission is granted. // Otherwise, check which permission is granted. getAndCompareLocations(); } else { // Fallback behavior if user denies permission Log.d(TAG, "User denied permission"); } });
بعد ذلك، تحقَّق مما إذا كان التطبيق لديه إذن "ACCESS_FINE_LOCATION
".
إذا لم يظهر لك هذا الخيار، اطلب الإذن من المستخدم من خلال بدء طلب الحصول على الإذن.
نشاط باستخدام مشغّل التطبيقات المحدد في الخطوة السابقة.
private void checkLocationPermissions() { if (ContextCompat.checkSelfPermission(this, ACCESS_FINE_LOCATION) == PackageManager.PERMISSION_GRANTED) { getAndCompareLocations(); } else { requestPermissionLauncher.launch( ACCESS_FINE_LOCATION); } }
استخدام الموقع الجغرافي المدمج بعد منح إذن ACCESS_FINE_LOCATION
للحصول على آخر موقع جغرافي معروف
للجهاز وإنشاء كائن LatLng
منه.
FusedLocationProviderClient fusedLocationClient = LocationServices.getFusedLocationProviderClient(this); fusedLocationClient.getLastLocation() .addOnSuccessListener(this, location -> { // Got last known location. In some rare situations this can be null. if (location == null) { return; } deviceLocation = new LatLng(location.getLatitude(), location.getLongitude()); // ... }); }
جارٍ احتساب المسافة بين العنوان الذي تم إدخاله والموقع الجغرافي للجهاز.
استخدام الرياضيات لحساب المسافة بين إحداثيَّي خطوط الطول/العرض (العنوان الذي تم إدخاله والموقع الجغرافي للجهاز). المصدر المفتوح حزمة تطوير البرامج بالاستناد إلى بيانات "خرائط Google" لمكتبة أدوات Android يتضمن بعض الطرق المفيدة لحساب المسافة الكروية بين نقطتَين على الأرض.
أولاً، عليك تثبيت "حزمة تطوير البرامج (SDK) للخرائط" لمكتبة أدوات Android من خلال إضافة ما يلي:
التبعية لملف build.gradle.kts
لتطبيقك:
dependencies { // Utility Library for Maps SDK for Android // You do not need to add a separate dependency for the Maps SDK for Android // since this library builds in the compatible version of the Maps SDK. implementation("com.google.maps.android:android-maps-utils:3.8.2") }
ثم، مرة أخرى في ملف النشاط بعد الحصول على آخر موقع معروف للجهاز، تحديد نصف قطر بالمتر لاعتبار الموقعين "متطابقين". يجب أن يكون النطاق الجغرافي كبيرًا بما يكفي لمراعاة التغيُّر في دقة نظام تحديد المواقع العالمي (GPS). وحجم المكان في العنوان الذي أدخله المستخدم. مثلاً:
private static final double acceptableProximity = 150;
بعد ذلك، استخدِم طريقة مكتبة الأدوات computeDistanceBetween()
.
لحساب المسافة بين موقع الجهاز والموقع الجغرافي الذي أدخله المستخدم
الموقع الجغرافي للعنوان. إذا كانت المسافة تقع ضمن نصف القطر المحدد أعلاه،
التفكير في المواقع المتطابقة.
// Use the computeDistanceBetween function in the Maps SDK for Android Utility Library // to use spherical geometry to compute the distance between two Lat/Lng points. double distanceInMeters = computeDistanceBetween(deviceLocation, enteredLocation); if (distanceInMeters <= acceptedProximity) { Log.d(TAG, "location matched"); // TODO: Display UI based on the locations matching } else { Log.d(TAG, "location not matched"); // TODO: Display UI based on the locations not matching }
(الاطّلاع على عيّنة الرموز الكاملة)
في حال تطابق العنوان والموقع الجغرافي، يجب عرض رسالة تأكيد في التطبيق على النحو الموضّح. في الشكل التالي.
نصائح لتحسين "سريعة" اشتراك تم التحقق منه
السماح للمستخدمين بإدخال عنوان استنادًا إلى نشاط تجاري أو نقطة اهتمام
اسمك يجب أن يكون "الكتابة المسبقة" خدمة التنبؤ لا تعمل فقط مع العناوين،
ولكن يمكنك أيضًا اختيار السماح للمستخدمين بإدخال أسماء الأنشطة التجارية أو المعالم.
للسماح بإدخال كل من العناوين وأسماء المؤسسات، أزِل
السمة types
من تعريف الإكمال التلقائي.
يمكنك تخصيص شكل ومظهر مربع الإكمال التلقائي للأماكن ليتوافق مع نمط الموقع الإلكتروني إذا كنت تفضل التحكم في شكل ومظهر المكان يمكنك استخدام ميزة الإكمال التلقائي في تطبيقك بدلاً من استخدام أداة Google وضع ميزة الإكمال التلقائي آليًا لتعزيز واجهة المستخدم التي تنشئها باستخدام خدمة الإكمال التلقائي للأماكن.