คู่มือการติดตั้งใช้งานการลงชื่อสมัครใช้ที่ได้รับการยืนยันฉบับย่อ

ภาพรวม

เว็บ iOS API

Google Maps Platform มีให้บริการสำหรับเว็บ (JS, TS), Android และ iOS และยังมี API บริการเว็บสำหรับรับข้อมูลเกี่ยวกับสถานที่ เส้นทาง และระยะทาง ตัวอย่างในคู่มือนี้เขียนขึ้นสำหรับแพลตฟอร์มเดียว แต่ มีให้สำหรับใช้งานในแพลตฟอร์มอื่นๆ ด้วย

สร้างเลย!

เครื่องมือสร้างอย่างรวดเร็ว ใน Google Cloud Console ช่วยให้คุณสร้างการเติมข้อความอัตโนมัติในแบบฟอร์มที่อยู่ได้โดยใช้ UI แบบอินเทอร์แอคทีฟที่สร้างโค้ด JavaScript ให้กับคุณ

ผู้ใช้เริ่มคุ้นเคยกับการใช้ชีวิตและการดำเนินงานในโลกดิจิทัลแล้ว โดยความสะดวกสบาย ความเร็ว และความปลอดภัยก็เป็นที่คาดหมายพื้นฐาน เมื่อพวกเขาสมัครบางอย่าง เช่น บัตรเครดิต บัญชีธนาคาร หรือเงินกู้ พวกเขาคาดหวังว่ากระบวนการนี้จะรวดเร็วและง่ายดาย

ยิ่งผู้ใช้ต้องพิมพ์หรือป้อนข้อมูลซ้ำมากเท่าไร ก็ยิ่งมีโอกาสน้อยลงเท่านั้น ที่คุณมีได้ในการรักษาลูกค้าไว้ การสร้างโซลูชันที่ง่ายและรวดเร็ว การลงชื่อสมัครใช้ที่ผ่านการยืนยันแล้ว จะปรับปรุงประสบการณ์ของผู้ใช้ มีส่วนสำคัญในการทำให้ผู้ใช้อยู่ในเว็บไซต์ของคุณอย่างต่อเนื่อง

ที่อยู่ที่ป้อนด้วยตนเองอาจทำให้ Conversion ลดลงเนื่องจากมีข้อผิดพลาด ข้อมูล CRM และข้อผิดพลาดในการนำส่งซึ่งมีค่าใช้จ่ายสูง รวดเร็วและ การลงชื่อสมัครใช้ที่ได้รับการยืนยันทำให้ลงชื่อสมัครใช้ ได้เร็วขึ้น โดยแนะนำสถานที่ใกล้เคียงได้ในทันที ด้วยการคลิกเพียงไม่กี่ครั้งและ แสดงที่อยู่ที่ป้อนไว้เพื่อการยืนยันด้วยภาพ ซึ่งจะช่วยให้ผู้ใช้ โปรดมั่นใจได้ว่าพวกเขาได้ป้อนที่อยู่ที่ถูกต้องแล้ว กำลังยืนยัน ที่อยู่ของผู้ใช้ที่ใช้ตำแหน่งปัจจุบันของผู้ใช้ยังช่วยป้องกันการประพฤติมิชอบด้วย และเสริมสร้างความมั่นใจให้กับผู้ใช้ในผลิตภัณฑ์และบริการของคุณ การยืนยันยังช่วยเพิ่มความมั่นใจให้คุณในการให้บริการออนไลน์ ธนาคารและบัตรเครดิตได้ทันที

หัวข้อนี้จะให้แนวทางในการใช้งานสำหรับการสร้างรายงานด่วนและ การลงชื่อสมัครใช้ที่ยืนยันแล้ว ประสบการณ์การใช้งาน Google Maps Platform เนื่องจากมีแนวโน้ม บนอุปกรณ์เคลื่อนที่ ตัวอย่างการใช้งานส่วนใหญ่ใน หัวข้อที่มุ่งเน้นใน Android (คุณสามารถดู แหล่งข้อมูลตัวอย่างแบบเต็มที่นี่) คุณยังสามารถใช้ iOS SDK เพื่อทำงานเดียวกันนี้ได้ด้วย

แผนภาพต่อไปนี้แสดง API หลักที่เกี่ยวข้องในการสร้างโซลูชัน (คลิกเพื่อขยาย)

กำลังเปิดใช้ API

หากต้องการใช้คำแนะนำเหล่านี้ คุณต้องเปิดใช้ API ต่อไปนี้ใน คอนโซล Google Cloud

สำหรับข้อมูลเพิ่มเติมเกี่ยวกับการตั้งค่า ดูที่ การรับ ที่เริ่มต้นด้วย Google Maps Platform

ส่วนแนวทางปฏิบัติแนะนำ

ต่อไปนี้เป็นแนวทางปฏิบัติและการปรับแต่งที่เราจะกล่าวถึงในหัวข้อนี้

  • ไอคอนเครื่องหมายถูกเป็นแนวทางปฏิบัติแนะนำหลัก
  • ไอคอนดาวเป็นตัวเลือกที่ไม่บังคับ แต่แนะนำให้ใช้ การปรับแต่งเพื่อปรับปรุงโซลูชัน
การเพิ่มการเติมข้อความอัตโนมัติในช่องป้อนข้อมูล ป้อนข้อมูลแบบฟอร์มที่อยู่โดยอัตโนมัติ เพิ่มฟังก์ชันการพิมพ์ตามการใช้งานจริงลงใน ปรับปรุงประสบการณ์ของผู้ใช้ในทุกแพลตฟอร์มและปรับปรุงที่อยู่ ความแม่นยำโดยการกดแป้นพิมพ์ต่ำสุด
ให้ภาพยืนยันของที่อยู่ ให้ผู้ใช้เห็นที่อยู่ของตนในแผนที่โดยเป็นภาพยืนยัน ว่าได้ป้อนที่อยู่ที่ถูกต้อง
การเปรียบเทียบที่อยู่ที่ผู้ใช้ป้อนกับตำแหน่งของอุปกรณ์ เปรียบเทียบที่อยู่ที่ผู้ใช้เลือกหรือป้อนไว้กับ ตําแหน่งปัจจุบันของอุปกรณ์เพื่อช่วยระบุว่าอุปกรณ์อยู่ที่ ที่อยู่ที่ระบุไว้ (ผู้ใช้ควรอยู่ที่บ้านเพื่อให้ดำเนินการได้ เมื่อลงชื่อสมัครใช้)
เคล็ดลับเพื่อยกระดับฟีเจอร์ Quick & การลงชื่อสมัครใช้ที่ยืนยันแล้ว คุณสามารถปรับปรุงการป้อนที่อยู่ให้มีประสิทธิภาพยิ่งขึ้นไปอีกด้วยการเพิ่ม การปรับแต่งรูปลักษณ์ของวิดเจ็ตการเติมข้อความอัตโนมัติ หรือ ซึ่งช่วยให้ผู้ใช้เลือกชื่อธุรกิจหรือจุดสังเกตเป็น อีเมล

การเพิ่มการเติมข้อความอัตโนมัติในช่องป้อนข้อมูล

ตัวอย่างนี้ใช้ข้อมูลต่อไปนี้ Places SDK สำหรับ Android ตัวเลือกดังกล่าวมีดังนี้ iOS | JavaScript

การเติมข้อมูลอัตโนมัติทำให้การป้อนที่อยู่ในแอปพลิเคชันของคุณง่ายขึ้น และนำไปสู่ เป็นอัตรา Conversion ที่สูงขึ้น และมอบประสบการณ์ที่ราบรื่นให้กับลูกค้า การเติมข้อความอัตโนมัติมีฟิลด์เดียวสำหรับป้อนข้อมูลอย่างรวดเร็วด้วย "type-ahead" ที่อยู่ การคาดการณ์ที่ใช้เพื่อสร้างแบบฟอร์มที่อยู่สำหรับการลงชื่อสมัครใช้โดยอัตโนมัติได้ เมื่อคุณรวมการเติมข้อมูลสถานที่อัตโนมัติไว้ในขั้นตอนการลงชื่อสมัครใช้ของคุณ คุณจะสามารถทำสิ่งต่อไปนี้ได้

  • ลดข้อผิดพลาดในการป้อนที่อยู่
  • ลดจำนวนขั้นตอนในการลงชื่อสมัครใช้
  • ลดความซับซ้อนในการป้อนข้อมูลอีเมลบนอุปกรณ์เคลื่อนที่หรืออุปกรณ์ที่สวมใส่ได้
  • ลดการกดแป้นพิมพ์และเวลาทั้งหมดที่จำเป็นสำหรับการลงชื่อสมัครใช้ของลูกค้าลงได้อย่างมาก

เมื่อผู้ใช้เลือกช่องเติมข้อความอัตโนมัติ และเริ่มพิมพ์ รายการ การคาดคะเนที่อยู่ปรากฏขึ้น

เมื่อผู้ใช้เลือกที่อยู่จากรายการการคาดการณ์ คุณจะสามารถใช้ การตอบกลับเพื่อยืนยันที่อยู่และรับตำแหน่ง การสมัครของคุณ จะสามารถป้อนข้อมูลในฟิลด์ที่ถูกต้องของแบบฟอร์มรายการที่อยู่ ดังที่แสดงใน รูปต่อไปนี้

วิดีโอ: ปรับปรุงแบบฟอร์มที่อยู่ด้วยการเติมข้อความอัตโนมัติในสถานที่

แบบฟอร์มที่อยู่

Android

iOS

เว็บ

Google Maps Platform มีวิดเจ็ตการเติมข้อความอัตโนมัติในสถานที่สำหรับอุปกรณ์เคลื่อนที่ แพลตฟอร์มและเว็บ วิดเจ็ตที่แสดงในรูปก่อนหน้าจะระบุ ที่มีฟังก์ชันเติมข้อความอัตโนมัติในตัว ซึ่งทำให้คุณสามารถ เพิ่มประสิทธิภาพสำหรับการค้นหาที่กำหนดขอบเขตสถานที่ตั้ง

ส่วนนี้จะอธิบายวิธีใช้การเติมข้อความอัตโนมัติในสถานที่สำหรับ "ด่วนและ" การลงชื่อสมัครใช้ที่ยืนยันแล้ว

การเพิ่มวิดเจ็ตเติมข้อความอัตโนมัติของสถานที่

ใน Android คุณสามารถเพิ่มวิดเจ็ตการเติมข้อความอัตโนมัติโดยใช้ ความตั้งใจในการเติมข้อความอัตโนมัติ ซึ่งจะเปิดใช้งานการเติมข้อความอัตโนมัติจากฟิลด์ป้อนที่อยู่บรรทัดที่ 1 โดยที่ ผู้ใช้จะเริ่มป้อนที่อยู่ เมื่อเริ่มพิมพ์ ระบบจะ ก็สามารถเลือกที่อยู่จากรายการการคาดคะเนการเติมข้อความอัตโนมัติ

ขั้นแรก ให้เตรียมตัวเปิดกิจกรรมโดยใช้ ActivityResultLauncher ซึ่งจะรอฟังผลลัพธ์ จากกิจกรรมที่เปิดตัว ผลลัพธ์ Callback จะมีออบเจ็กต์ 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.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 ที่มีอยู่ใน ออบเจ็กต์ผลลัพธ์ เนื่องจาก Intent สร้างขึ้นโดย Autocomplete.IntentBuilder เมธอด Autocomplete.getPlaceFromIntent() สามารถแยกออบเจ็กต์สถานที่ จากนั้น

    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 เพื่อกระตุ้นให้ผู้ใช้กรอกข้อมูลดังกล่าวหากจำเป็น

ให้ภาพยืนยันของที่อยู่

ตัวอย่างนี้ใช้ข้อมูลต่อไปนี้ Maps 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. เรียกใช้เมธอด 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 หรือคุณจะโหลดรหัสแผนที่ที่มี ได้รับการนิยามด้วย การจัดรูปแบบ Maps ในระบบคลาวด์

    @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 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 หรือไม่ หากไม่มี ให้ขอสิทธิ์จากผู้ใช้ด้วยการเปิดคำขอสิทธิ์ กิจกรรมโดยใช้ Launcher ที่ระบุไว้ในขั้นตอนก่อนหน้านี้

    private void checkLocationPermissions() {
        if (ContextCompat.checkSelfPermission(this, ACCESS_FINE_LOCATION)
                == PackageManager.PERMISSION_GRANTED) {
            getAndCompareLocations();
        } else {
            requestPermissionLauncher.launch(
                    ACCESS_FINE_LOCATION);
        }
    }

เมื่อได้รับสิทธิ์ ACCESS_FINE_LOCATION แล้ว ให้ใช้ Fused 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());
                    // ...
                });
    }

กำลังคำนวณระยะห่างระหว่างที่อยู่ที่ป้อนกับตำแหน่งของอุปกรณ์

ใช้คณิตศาสตร์เพื่อคำนวณระยะห่างระหว่างพิกัดละติจูด/ลองจิจูด 2 พิกัด (ที่อยู่และตำแหน่งของอุปกรณ์ที่ป้อน) โอเพนซอร์ส Maps SDK สำหรับไลบรารียูทิลิตีของ Android มีวิธีบางอย่างที่สะดวกในการคำนวณระยะทางแบบทรงกลม ระหว่างจุด 2 จุดบนโลก

ก่อนอื่น ให้ติดตั้ง Maps 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")
}

จากนั้นกลับไปที่ไฟล์กิจกรรมหลังจากทราบตำแหน่งอุปกรณ์ที่ทราบล่าสุด กำหนดรัศมีเป็นเมตรเพื่อพิจารณาทั้ง 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
}

(ดูตัวอย่างโค้ดแบบเต็ม)

หากที่อยู่และตำแหน่งตรงกัน ให้แสดงการยืนยันในแอปตามที่แสดงไว้ ในรูปต่อไปนี้

เคล็ดลับเพื่อยกระดับฟีเจอร์ Quick & การลงชื่อสมัครใช้ที่ยืนยันแล้ว

อนุญาตให้ผู้ใช้ป้อนที่อยู่ของธุรกิจหรือจุดสนใจ ชื่อ "ประเภทที่จะนำหน้า" บริการการคาดคะเนไม่เพียงแต่ใช้งานกับที่อยู่ แต่คุณเลือกให้ผู้ใช้ป้อนชื่อธุรกิจหรือจุดสังเกตก็ได้ หากต้องการอนุญาตให้ป้อนทั้งที่อยู่และชื่อสถานประกอบการ ให้นำที่อยู่ออก พร็อพเพอร์ตี้ types จากคําจํากัดความของการเติมข้อความอัตโนมัติ

กำหนดค่ารูปแบบของกล่องการเติมข้อความอัตโนมัติในสถานที่ให้ตรงตาม สไตล์เว็บไซต์ หากคุณต้องการควบคุมรูปลักษณ์ของสถานที่ คุณสามารถใช้การเติมข้อความอัตโนมัติในแอปแทนที่จะใช้วิดเจ็ตของ Google วางการเติมข้อความอัตโนมัติแบบเป็นโปรแกรม เพื่อขับเคลื่อน UI ที่คุณสร้างขึ้นด้วยบริการเติมข้อความอัตโนมัติในสถานที่