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

סקירה כללית

web iOS API

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

לפתח!

הכלי Quick Builder ב-Google Cloud Console מאפשר ליצור השלמה אוטומטית של טופסי כתובת באמצעות ממשק משתמש אינטראקטיבי שיוצר עבורכם קוד JavaScript.

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

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

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

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

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

הפעלת ממשקי API

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

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

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

בהמשך נדון בנושא שיטות העבודה וההתאמות האישיות.

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

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

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

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

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

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

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

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

טופסי כתובת

Android

iOS

אתרים

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

בקטע הזה נסביר איך להטמיע השלמה אוטומטית של מקומות להרשמה מהירה ומאומתת.

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

ב-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");
                }
            });

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

קבלת מזהה למקטע ורישום הקריאה החוזרת

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

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

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

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

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

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

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

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

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

בדוגמה הזו נשתמש: Places SDK ל-Android זמין גם: iOS | JavaScript | ממשק 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. הקריאה החוזרת (callback) בתוצאה תכיל מחרוזת שמציינת אם המשתמש העניק או דחה את ההרשאה המבוקשת.

    // 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());
                    // ...
                });
    }

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

אפשר להשתמש במתמטיקה כדי לחשב את המרחק בין שתי קואורדינטות של קווי אורך ורוחב (הכתובת שהוזנה ומיקום המכשיר). ב-Maps SDK for Android Utility Library יש כמה שיטות שימושיות לחישוב המרחק כדורי בין שתי נקודות בכדור הארץ.

קודם כול, התקינו את ה-SDK של מפות Google לספריית הכלים של Android על ידי הוספת התלות הבאה לקובץ build.gradle של האפליקציה:

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.0'
}

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