מדריך ליישום של הרשמה מאומתת במהירות

סקירה כללית

אתר iOS ב-API

הפלטפורמה של מפות Google זמינה לאינטרנט (JS, TS), Android ו-iOS. וגם מציע ממשקי API של שירותי אינטרנט לקבלת מידע על מקומות, מסלולים, ומרחקים. הדוגמאות במדריך הזה כתובות לפלטפורמה אחת, אבל קישורים למסמכים זמינים להטמעה בפלטפורמות אחרות.

לפיתוח האפליקציות!

פיתוח מהיר במסוף Google Cloud אפשר ליצור השלמה אוטומטית של טופסי כתובת ממשק משתמש אינטראקטיבי שמפיק קוד JavaScript בשבילכם.

המשתמשים התרגלו לחיים ולפעול בעולם הדיגיטלי שבהן נוחות, מהירות ואבטחה הן הציפיות הבסיסיות. כשהם מגישים בקשה לקבלת משהו כמו כרטיס אשראי, חשבון בנק או הלוואה, הם מצפים שהתהליך יהיה מהיר וקל.

ככל שיותר משתמשים צריכים להקליד או להזין נתונים כפולים, כך פוחת הסיכוי כרגע לשמר אותם כלקוחות. יצירת חוויית הרשמה מאומתת תשפר את חוויית המשתמש כדי לעזור לכם להשאיר את המשתמשים באתר.

כתובות שהוזנו ידנית עלולות להוביל לירידה במספר ההמרות, לשגיאה נתונים ממערכת ניהול קשרי הלקוחות (CRM) וטעויות מסירה שגורמות לעלויות יקרות. מהיר & הרשמה מאומתת במהירות רבה יותר, תוך הצעות לכתובות קרובות באמצעות כמה הקשות בלבד להציג את הכתובת שהוזנה לאישור חזותי, כדי לעזור למשתמש בטוחים שהם הזינו את הכתובת הנכונה. אימות של שימוש במיקום הנוכחי של המשתמש גם עוזר למנוע הונאות ומחזקת את תחושת הביטחון של המשתמשים במוצרים ובשירותים שלכם. האימות יכול גם להגביר את הביטחון שלך בהצגה של מודעות וירטואליות בכרטיסי אשראי ובכרטיסי בנק באופן מיידי.

נושא זה מספק הדרכה ליישום יצירה של הרשמה מאומתת בפלטפורמה של מפות Google. מאחר שהמשתמשים צפויים להירשם במכשירים ניידים, רוב הדוגמאות להטמעה להתמקד בנושא ב-Android. (אפשר לראות את כאן ניתן למצוא את המקור המלא לדוגמה). אפשר גם להשתמש בערכות ה-SDK ל-iOS כדי לבצע את אותם דברים.

בתרשים הבא מוצגים ממשקי ה-API העיקריים שמעורבים בפיתוח הפתרון. (יש ללחוץ כדי להגדיל).

הפעלת ממשקי API

כדי ליישם את ההמלצות האלה, צריך להפעיל את ממשקי ה-API הבאים מסוף Google Cloud:

למידע נוסף על ההגדרה, ראו קבלת מתחילים לעבוד עם הפלטפורמה של מפות Google.

הקטעים של השיטות המומלצות

בהמשך מפורטים שיטות העבודה וההתאמות האישיות שנעסוק בהן בנושא זה.

  • סמל של סימן וי הוא שיטה מומלצת חשובה.
  • סמל הכוכב הוא אופציונלי, אבל מומלץ התאמה אישית כדי לשפר את הפתרון.
הוספת השלמה אוטומטית לשדות להזנת קלט מילוי אוטומטי של טופס כתובת. הוספת פונקציונליות של 'הקלדה בזמן' אל שיפור חוויית המשתמש בכל הפלטפורמות ושיפור דיוק בהקשות מינימליות.
הצגת אישור חזותי של הכתובת המשתמשים יכולים לראות את הכתובת שלהם במפה כאישור חזותי שהם הזינו את הכתובת הנכונה.
השוואה בין כתובת שהזין המשתמש למיקום המכשיר השוואה בין הכתובת שנבחרה או שהוזנה לכתובת של המשתמש במיקום הנוכחי של המכשיר כדי לעזור לקבוע שהם נמצאים הכתובת שצוינה. (כדי שזה יעבוד, המשתמשים צריכים להיות בבית כשהם יירשמו).
טיפים לשיפור נוסף של הפיצ'רים 'מהירים' הרשמה מאומתת אפשר לשפר את הזנת הכתובת עוד יותר באמצעות תוספות כמו כמו התאמה אישית של המראה והתחושה של הווידג'ט של ההשלמה האוטומטית, היא מאפשרת למשתמשים לבחור שם של עסק או ציון דרך address.

הוספת ההשלמה האוטומטית לשדות להזנת קלט

בדוגמה הזו: Places SDK ל-Android זמין גם: iOS | JavaScript

השלמה אוטומטית של מקומות יכולה לפשט את הזנת הכתובות באפליקציה, כדי להשיג שיעורי המרה גבוהים יותר וחוויה חלקה עבור הלקוחות. ההשלמה האוטומטית מספקת שדה יחיד לכניסה מהירה עם "type-ahead" כתובת חיזוי שאפשר להשתמש בו כדי לאכלס באופן אוטומטי טופס של כתובת הרשמה. על ידי שילוב של השלמה אוטומטית לגבי מקומות בתהליך ההרשמה, תוכלו:

  • לצמצם שגיאות בהזנת הכתובת.
  • צריך להקטין את מספר השלבים בתהליך ההרשמה.
  • תהליך הזנת הכתובת יהיה פשוט יותר במכשירים ניידים או במכשירים לבישים.
  • מפחיתים משמעותית את ההקשות ואת הזמן הכולל שנדרש ללקוח כדי להירשם.

כשהמשתמש בוחר בתיבת ההזנה של 'השלמה אוטומטית' ומתחיל להקליד, תוצג לו רשימה יופיעו חיזויים של כתובות.

כשהמשתמש בוחר כתובת מרשימת החיזויים, אתם יכולים להשתמש את התשובה כדי לאמת את הכתובת ולקבל את המיקום. האפליקציה שלך ואז הוא יכול לאכלס את השדות הנכונים בטופס הזנת הכתובת, כמו שמוצג לפי האיור הבא.

סרטונים: שיפור טופסי כתובת עם השלמה אוטומטית של מקומות

טופסי כתובת

Android

iOS

פיתוח אתרים

הפלטפורמה של מפות Google מספקת ווידג'ט להשלמה אוטומטית של מקומות בנייד פלטפורמות ואינטרנט. בווידג'ט, שמוצג בתמונות הקודמות, של תיבת דו-שיח של חיפוש עם פונקציונליות מובנית של השלמה אוטומטית, לבצע אופטימיזציה לחיפוש ברמת מיקום.

קטע זה מתאר כיצד ליישם השלמה אוטומטית של מקומות בתכונה 'חיפוש מהיר' הרשמה מאומתת.

הוספת הווידג'ט 'השלמה אוטומטית של מקומות'

ב-Android, אפשר להוסיף את הווידג'ט של ההשלמה האוטומטית באמצעות Intent של ההשלמה האוטומטית שמפעילה את ההשלמה האוטומטית של המקום משדה הקלט של שורת כתובת 1, כאשר המשתמש יתחיל להזין את הכתובת. כשהם יתחילו להקליד, הם יוכלו לבחור את הכתובת שלהם מרשימת החיזויים להשלמה אוטומטית.

קודם כול, מכינים את מרכז האפליקציות, באמצעות ActivityResultLauncher כך יאזין לתוצאה מהפעילות שהושקה. הקריאה החוזרת של התוצאה תכיל אובייקט 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");
                }
            });

לאחר מכן מגדירים את מאפייני השדות, המיקום והסוג של להציב Intent להשלמה אוטומטית ולפתח אותו באמצעות 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 קודם מגדירה גם מה צריך להיות מתבצע כשתוצאת הפעילות מוחזרת בקריאה החוזרת (callback). אם המשתמש נבחר חיזוי, הוא יימסר בהכוונה שכלולה של אובייקט התוצאה. מכיוון שהכוונה נוצרה על ידי 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 כדי לעודד את המשתמש למלא את הפרטים האלה במקרה הצורך.

יש אישור חזותי של הכתובת

בדוגמה הזו: SDK של מפות ל-Android זמין גם: iOS | JavaScript

כחלק מהזנת הכתובת, יש לספק למשתמשים אישור חזותי של את הכתובת במפה. דבר זה מספק למשתמשים הבטחה נוספת לכך שהכתובת נכון.

באיור הבא מוצגת מפה מתחת לכתובת עם סיכה בכתובת נכנס.

בדוגמה הבאה פועלים לפי השלבים הבסיסיים להוספת מפה. ב-Android. אפשר לקרוא פרטים נוספים במסמכי התיעוד.

מתבצעת הוספה של 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);
        }
    }

קבלת כינוי למקטע ורישום הקריאה החוזרת (callback)

  1. כדי לקבל נקודת אחיזה למקטע, קוראים לפונקציה FragmentManager.findFragmentById ולהעביר אותה מזהה המשאב של המקטע בקובץ הפריסה. אם הוספתם את המקטע באופן דינמי, מדלגים על השלב הזה כי כבר מאחזרים את הכינוי.

  2. מפעילים את ה-method getMapAsync כדי להגדיר את בקטע של הקריאה החוזרת (callback).

לדוגמה, אם הוספתם את המקטע באופן סטטי:

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, או לחלופין לטעון מזהה מפה שיש לו הוגדר באמצעות עיצוב מפות Google באמצעות הענן.

    @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, יש אפשרות נוספת, מצב Lite כדי לספק גישה מוגבלת האינטראקטיביות.

השוואה בין כתובת שהוזנה למשתמש לבין מיקום המכשיר

השגת הוכחת כתובת — ביטחון שהמשתמש נמצא הכתובת שהם הזינו — עלולה להיות מורכבת בגלל גורמים כמו גישה מרחוק. מיקום משתמשים, משתמשים שעוברים לכתובת חדשה או עסקים דיגיטליים (כמו בנקים דיגיטליים) שאין להם מיקום פיזי שמשתמשים יכול לבקר באתר כדי לספק הוכחת כתובת עם חשבונות על תשתיות או מידע אחר התיעוד. אם מספקים דרכים דיגיטליות לאימות כתובות של משתמשים, אפשר שמספקים חוויית הרשמה מהירה וחלקה.

האבטחה היא חשובה ביותר בהשגת בדיקת כתובת, במיוחד עם תהליך ההרשמה. בקטע הזה יש הנחיות ודוגמאות לבדיקה האם המיקום של המשתמש במהלך ההרשמה תואם לכתובת שהוא הזין משלהם.

תהליך ההשוואה בין כתובת שהוזנה למיקום של מכשיר כולל את השלבים הבאים:

  1. המרת הכתובת שהוזנה על ידי המשתמש לקואורדינטות גיאוגרפיות.
  2. הצגת בקשת הרשאה מהמשתמש למידע על מיקום המכשיר.
  3. חישוב המרחק בין הכתובת שהוזנה למיקום המכשיר. צריך לקבוע מרחק מקסימלי שנכלל בהתאמה למיקום של כתובת.

האיור הבא הוא דוגמה לאופן שבו אפשר לבקש ממשתמשים להשוות הכתובת שהם הזינו במיקום הנוכחי שלהם.

המרת הכתובת שהוזנה על ידי המשתמש לקואורדינטות גיאוגרפיות

בדוגמה הזו: Places SDK ל-Android זמין גם: iOS | JavaScript | Geocoding API

לאחר שהמשתמשים מסכימים לאימות הכתובת (על ידי נגיעה באפשרות 'אימות המיקום שלי עכשיו' באיור הקודם), השלב הראשון בהשוואת כתובת לכתובת הנוכחית המיקום ממיר את הכתובת שהוזנה לקואורדינטות גיאוגרפיות.

אם המשתמש בחר את הכתובת שלו באמצעות השלמה אוטומטית של מקומות, חשוב לבקש Place.Field.LAT_LNG ברשימת השדות 'השלמה אוטומטית של מקומות', כפי שמוצג הוספת קטע הקוד של הווידג'ט להשלמה אוטומטית של מקומות Place.getLatLng() לקבלת הקואורדינטות הגיאוגרפיות של הכתובת שנבחרה.

coordinates = place.getLatLng();

אם המשתמש הזין את הכתובת שלו באופן ידני או ביצע שינויים אחרי המקום ההשלמה האוטומטית מילאה את השדות. השתמשו שירות Android Geocoder או 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 API.

עיון מהיר בקידוד כתובות 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());
                    // ...
                });
    }

חישוב המרחק בין הכתובת שהוזנה לבין מיקום המכשיר

השתמשו במתמטיקה כדי לחשב את המרחק בין שתי קואורדינטות של קווי אורך ורוחב (הכתובת והמיקום של המכשיר הוזנו). קוד פתוח SDK של מפות Google לספריית השירות של Android יש כמה שיטות שימושיות לחישוב המרחק הכדורי בין שתי נקודות בכדור הארץ.

קודם כול, צריך להתקין את ה-SDK של מפות Google עבור Android Utility Library על ידי הוספת הקוד הבא תלות בקובץ 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
}

(לצפייה בדוגמת קוד מלאה)

אם הכתובת והמיקום תואמים, יוצג אישור באפליקציה, כפי שמוצג באיור הבא.

טיפים לשיפור נוסף של ההגדרות המהירות הרשמה מאומתת

המשתמשים יכולים להזין כתובת שמבוססת על עסק או נקודת עניין name. "הקלדה קדימה" שירות חיזוי לא פועל רק לגבי כתובות, אבל אפשר גם לאפשר למשתמשים להזין שמות של עסק או של ציוני דרך. כדי לאפשר הזנה של כתובות ושמות של מקומות, צריך להסיר את את המאפיין types מהגדרת ההשלמה האוטומטית.

להתאים אישית את העיצוב והסגנון של התיבה 'השלמה אוטומטית' כך שיתאימו בסגנון של האתר. אם ברצונך לשלוט במראה ובחוויה של המקום להשלמה אוטומטית באפליקציה במקום להשתמש בווידג'ט של Google, אפשר להשתמש השלמה אוטומטית של מקומות באופן פרוגרמטי כדי להפעיל את ממשק המשתמש שאתם יוצרים באמצעות שירות ההשלמה האוטומטית של המקום.