סקירה כללית
Google Maps Platform זמינה לאינטרנט (JS, TS), ל-Android ול-iOS, וכוללת גם ממשקי API של שירותי אינטרנט לקבלת מידע על מקומות, מסלולים ומרחקים. הדוגמאות במדריך הזה נכתבו לפלטפורמה אחת, אבל יש קישורים למסמכי תיעוד להטמעה בפלטפורמות אחרות.
בעזרת Quick Builder במסוף Google Cloud, אתם יכולים ליצור השלמה אוטומטית של טופס כתובת באמצעות ממשק משתמש אינטראקטיבי שיוצר בשבילכם קוד JavaScript.
המשתמשים התרגלו לחיות ולפעול בעולם דיגיטלי שבו נוחות, מהירות ואבטחה הן ציפיות בסיסיות. כשהם מגישים בקשה למשהו כמו כרטיס אשראי, חשבון בנק או הלוואה, הם מצפים שהתהליך יהיה מהיר וקל.
ככל שהמשתמשים צריכים להקליד יותר או להזין נתונים כפולים, כך קטן הסיכוי שהם יישארו לקוחות שלכם. יצירת חוויית הרשמה מהירה, קלה ומאומתת תשפר את חוויית המשתמש ותעזור לכם לשמור על המשתמשים באתר.
כתובות שהוזנו באופן ידני עלולות להוביל לירידה בהמרות, לנתוני CRM שגויים ולטעויות יקרות במשלוח. תהליך ההרשמה המהיר והמאומת מאפשר להירשם מהר יותר. הוא מציע כתובות סמוכות באופן מיידי בכמה הקשות פשוטות, ומציג את הכתובת שהוזנה לאישור חזותי, כדי שהמשתמש ירגיש בטוח שהוא הזין את הכתובת הנכונה. אימות הכתובת של המשתמש באמצעות המיקום הנוכחי שלו עוזר גם למנוע הונאות ומגביר את האמון של המשתמשים במוצרים ובשירותים שלכם. האימות יכול גם להגביר את הביטחון שלכם כשאתם מספקים כרטיסי אשראי וכרטיסי בנק וירטואליים באופן מיידי.
במסמך הזה מוסבר איך להטמיע חוויית הרשמה מהירה ומאומתת באמצעות Google Maps Platform. המשתמשים כנראה יירשמו במכשירים ניידים, ולכן רוב דוגמאות ההטמעה במסמך הזה מתמקדות ב-Android. דוגמה מלאה מופיעה בקוד המקור לדוגמה. אפשר גם להשתמש בערכות ה-SDK ל-iOS כדי להשיג את אותן מטרות.
בתרשים הבא מוצגים ממשקי ה-API המרכזיים שמשמשים לבניית הפתרון (אפשר ללחוץ כדי להגדיל).
הפעלת ממשקי API
כדי ליישם את ההמלצות האלה, צריך להפעיל את ממשקי ה-API הבאים במסוף Google Cloud:
- SDK של מפות ל-Android (או ה-API לפלטפורמה שבחרתם)
- Places API
- Geocoding API
מידע נוסף על ההגדרה זמין במאמר תחילת העבודה עם Google Maps Platform.
קטעי שיטות מומלצות
במסמך הזה מפורטות השיטות וההתאמות האישיות הבאות.
- סמל סימן וי הוא שיטה מומלצת בסיסית.
- סמל הכוכב הוא התאמה אישית אופציונלית, אבל מומלצת, לשיפור הפתרון.
| הוספת השלמה אוטומטית לשדות להזנת קלט | ממלאים אוטומטית טופס כתובת. הוספת פונקציונליות של הקלדה תוך כדי תנועה כדי לשפר את חוויית המשתמש בכל הפלטפורמות ולשפר את דיוק הכתובת עם מינימום הקשות. | |
| אישור חזותי של הכתובת | לאפשר למשתמשים לראות את הכתובת שלהם במפה כאישור ויזואלי לכך שהם הזינו את הכתובת הנכונה. | |
| השוואה בין הכתובת שהמשתמש הזין לבין מיקום המכשיר | השוואה בין הכתובת שהמשתמש בחר או הזין לבין המיקום הנוכחי של המכשיר, כדי לקבוע שהמשתמש נמצא בכתובת שצוינה. (כדי שזה יעבוד, המשתמשים צריכים להיות בבית כשהם נרשמים). | |
| טיפים לשיפור נוסף של ההרשמה המהירה והמאומתת | אפשר לשפר עוד יותר את הזנת הכתובת באמצעות תוספות כמו התאמה אישית של המראה והתחושה של הווידג'ט להשלמה אוטומטית, או לאפשר למשתמשים לבחור את השם של עסק או של ציון דרך ככתובת. |
הוספת השלמה אוטומטית לשדות להזנת קלט
| בדוגמה הזו נעשה שימוש ב: Places SDK ל-Android | זמין גם ב: iOS | JavaScript |
השלמה אוטומטית למקומות יכולה לפשט את הזנת הכתובת באפליקציה, וכך להגדיל את שיעורי ההמרה ולספק חוויה חלקה ללקוחות. ההשלמה האוטומטית מספקת שדה יחיד להזנה מהירה עם חיזוי כתובת מסוג "הקלדה מראש", שאפשר להשתמש בו כדי לאכלס אוטומטית טופס כתובת להרשמה. הוספת השלמה אוטומטית למקומות בתהליך ההרשמה מאפשרת לכם:
- להפחית את מספר השגיאות בהזנת כתובות.
- להפחית את מספר השלבים בתהליך ההרשמה.
- לפשט את תהליך הזנת הכתובת במכשירים ניידים או במכשירים לבישים.
- להפחית משמעותית את מספר ההקשות ואת משך הזמן הכולל שנדרש ללקוח כדי להירשם.
כשהמשתמש בוחר בתיבת ההזנה של ההשלמה האוטומטית ומתחיל להקליד, מופיעה רשימה של חיזויים לכתובת.
כשהמשתמש בוחר כתובת מתוך רשימת התחזיות, אפשר להשתמש בתגובה כדי לאמת את הכתובת ולקבל את המיקום. לאחר מכן, האפליקציה יכולה לאכלס את השדות הנכונים בטופס להזנת הכתובת, כמו שמוצג באיור הבא.

סרטונים: שיפור טופסי כתובות באמצעות השלמה אוטומטית למקומות
טפסים של כתובות
Android
iOS
פיתוח אתרים
Google Maps Platform מספקת ווידג'ט של השלמה אוטומטית למקומות לפלטפורמות לנייד ולאינטרנט. בווידג'ט, שמוצג באיורים הקודמים, יש תיבת דו-שיח לחיפוש עם פונקציונליות מובנית של השלמה אוטומטית, שאפשר אפילו לבצע בה אופטימיזציה לחיפוש בהיקף מיקום.
בקטע הזה מוסבר איך להטמיע את ההשלמה האוטומטית למקומות לצורך הרשמה מהירה ומאומתת.
הוספת הווידג'ט "השלמה אוטומטית למקומות"
ב-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"); } });
לאחר מכן מגדירים את השדות, המיקום ומאפייני הסוג של כוונת ההשלמה האוטומטית למקומות ויוצרים אותה באמצעות 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.LOCATION, Place.Field.VIEWPORT); // Build the autocomplete intent with field, country, and type filters applied Intent intent = new Autocomplete.IntentBuilder(AutocompleteActivityMode.OVERLAY, fields) .setCountries(List.of("US")) // IMPORTANT: the widget uses the legacy api .setTypesFilter(List.of(PlaceTypes.ADDRESS)) .build(this); startAutocomplete.launch(intent); }
טיפול בכתובת שמוחזרת על ידי השלמה אוטומטית למקומות
הגדרת ActivityResultLauncher קודם לכן הגדירה גם מה צריך לעשות כשתוצאת הפעילות מוחזרת בקריאה החוזרת (callback). אם המשתמש בחר חיזוי, הוא יועבר ב-intent שכלול באובייקט התוצאה. מכיוון שה-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, מגדירים את הפרמטר types לערך
addressכדי להגביל את ההתאמות לכתובות רחוב מלאות. מידע נוסף על סוגים שנתמכים בבקשות להשלמה אוטומטית למקומותאם לא צריך לחפש בכל העולם, מגדירים את ההגבלות וההטיות המתאימות. יש כמה פרמטרים שאפשר להשתמש בהם כדי להטות או להגביל את ההתאמה לאזורים ספציפיים בלבד.
משתמשים ב-
RectangularBoundsכדי להגדיר את הגבולות המלבניים להגבלת אזור, ומשתמשים ב-setLocationRestriction()כדי לוודא שיוחזרו רק כתובות באזורים האלה.כדי להגביל את התשובות לקבוצה מסוימת של מדינות, צריך להשתמש ב-
setCountries().
השאירו את השדות ניתנים לעריכה למקרה ששדות מסוימים לא יתאימו, ואפשרו ללקוחות לעדכן את הכתובת אם צריך. רוב הכתובות שמוחזרות על ידי השלמה אוטומטית למקומות לא מכילות מספרי משנה של מקומות, כמו מספר דירה, סוויטה או יחידה. לכן, אפשר להעביר את המיקוד לשורת כתובת 2 כדי לעודד את המשתמש למלא את המידע הזה אם יש צורך.
אישור חזותי של הכתובת
| בדוגמה הזו נעשה שימוש ב: SDK של מפות ל-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.getLocation();
// 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);
}
}קבלת נקודת אחיזה ל-fragment ורישום ה-callback
כדי לקבל נקודת אחיזה למקטע, צריך לבצע קריאה ל-method
FragmentManager.findFragmentByIdולהעביר לה את מזהה המשאב של המקטע בקובץ הפריסה. אם הוספתם את המקטע באופן דינמי, דלגו על השלב הזה כי כבר אחזרתם את נקודת האחיזה.מפעילים את ה-method
getMapAsyncכדי להגדיר את הקריאה החוזרת (callback) ב-fragment.
לדוגמה, אם הוספתם את הפראגמנט באופן סטטי:
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, אפשרות נוספת היא להפעיל את המצב הבסיסי כדי לספק אינטראקטיביות מוגבלת.
השוואה בין הכתובת שהמשתמש הזין לבין מיקום המכשיר
קשה להשיג הוכחת כתובת – לוודא שהמשתמש נמצא בכתובת שהוא הזין – בגלל גורמים כמו מיקום של משתמשים מרוחקים, משתמשים שעוברים לכתובת חדשה או עסקים דיגיטליים (כמו בנקים דיגיטליים) שאין להם מיקום פיזי שהמשתמשים יכולים לבקר בו כדי לספק הוכחת כתובת באמצעות חשבונות על תשתיות או מסמכים אחרים. אם תספקו דרכים דיגיטליות לאימות כתובות של משתמשים, תוכלו לספק חוויית הרשמה מהירה וחלקה יותר.
האבטחה היא הדבר הכי חשוב כשמבצעים בדיקת כתובת, במיוחד בתהליך הרשמה דיגיטלי. בקטע הזה מופיעים הנחיות ודוגמאות לבדיקה אם המיקום של המשתמש בזמן ההרשמה תואם לכתובת שהוא מזין ככתובת שלו.
כדי להשוות בין הכתובת שהוזנה לבין מיקום המכשיר, צריך לבצע את השלבים הבאים:
- המרת הכתובת שהמשתמש הזין לקואורדינטות גיאוגרפיות.
- בקשת הרשאה מהמשתמש לקבל את מיקום המכשיר שלו.
- חישוב המרחק בין הכתובת שהוזנה לבין מיקום המכשיר. אתם יכולים לקבוע את המרחק המקסימלי שייחשב כהתאמה בין כתובת למיקום.
באיור הבא מוצגת דוגמה להנחיה שמוצגת למשתמשים כדי להשוות בין הכתובת שהם הזינו למיקום הנוכחי שלהם.

המרת הכתובת שהמשתמש הזין לקואורדינטות גיאוגרפיות
| בדוגמה הזו נעשה שימוש ב: Places SDK ל-Android | זמין גם ב: iOS | JavaScript | Geocoding API |
אחרי שהמשתמשים מאשרים את אימות הכתובת (על ידי הקשה על 'אימות הנוכחות שלי במקום' בדמות הקודמת), השלב הראשון בהשוואה בין הכתובת למיקום הנוכחי הוא המרת הכתובת שהוזנה לקואורדינטות גיאוגרפיות.
אם המשתמש בחר את הכתובת שלו באמצעות השלמה אוטומטית למקומות, חשוב לבקש את Place.Field.LAT_LNG ברשימת השדות של ההשלמה האוטומטית למקומות, כמו שמוצג בקטע הקוד הוספת הווידג'ט של השלמה אוטומטית למקומות, ולקרוא ל-method Place.getLatLng() כדי לקבל את הקואורדינטות הגיאוגרפיות של הכתובת שנבחרה.
coordinates = place.getLatLng();
אם המשתמש הזין את הכתובת שלו באופן ידני או ביצע שינויים אחרי שהשדות הושלמו אוטומטית באמצעות Place Autocomplete, צריך להשתמש בשירות 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());
// ...
});
}חישוב המרחק בין הכתובת שהוזנה לבין מיקום המכשיר
משתמשים במתמטיקה כדי לחשב את המרחק בין שתי קואורדינטות של קו רוחב וקו אורך (הכתובת שהוזנה ומיקום המכשיר). בספריית כלי העזר Maps SDK for Android Utility Library בקוד פתוח יש כמה שיטות שימושיות לחישוב המרחק הספרי בין שתי נקודות בכדור הארץ.
קודם כל, מתקינים את SDK של מפות ל-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(libs.android.maps.utils) }
אחר כך, חוזרים לקובץ הפעילות אחרי קבלת המיקום הידוע האחרון של המכשיר, ומגדירים רדיוס במטרים כדי שהמיקומים ייחשבו כ "תואמים". הרדיוס צריך להיות גדול מספיק כדי להתחשב בשינויים ברמת הדיוק של ה-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, אתם יכולים להשתמש בהשלמה אוטומטית למקומות באופן פרוגרמטי כדי להפעיל את ממשק המשתמש שאתם יוצרים באמצעות שירות ההשלמה האוטומטית למקומות.