ภาพรวม
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
- Maps SDK สำหรับ Android (หรือ API สำหรับแพลตฟอร์มที่คุณเลือก)
- Places API
- Geocoding API
สำหรับข้อมูลเพิ่มเติมเกี่ยวกับการตั้งค่า ดูที่ การรับ ที่เริ่มต้นด้วย Google Maps Platform
ส่วนแนวทางปฏิบัติแนะนำ
ต่อไปนี้เป็นแนวทางปฏิบัติและการปรับแต่งที่เราจะกล่าวถึงในหัวข้อนี้
- ไอคอนเครื่องหมายถูกเป็นแนวทางปฏิบัติแนะนำหลัก
- ไอคอนดาวเป็นตัวเลือกที่ไม่บังคับ แต่แนะนำให้ใช้ การปรับแต่งเพื่อปรับปรุงโซลูชัน
การเพิ่มการเติมข้อความอัตโนมัติในช่องป้อนข้อมูล | ป้อนข้อมูลแบบฟอร์มที่อยู่โดยอัตโนมัติ เพิ่มฟังก์ชันการพิมพ์ตามการใช้งานจริงลงใน ปรับปรุงประสบการณ์ของผู้ใช้ในทุกแพลตฟอร์มและปรับปรุงที่อยู่ ความแม่นยำโดยการกดแป้นพิมพ์ต่ำสุด | |
ให้ภาพยืนยันของที่อยู่ | ให้ผู้ใช้เห็นที่อยู่ของตนในแผนที่โดยเป็นภาพยืนยัน ว่าได้ป้อนที่อยู่ที่ถูกต้อง | |
การเปรียบเทียบที่อยู่ที่ผู้ใช้ป้อนกับตำแหน่งของอุปกรณ์ | เปรียบเทียบที่อยู่ที่ผู้ใช้เลือกหรือป้อนไว้กับ ตําแหน่งปัจจุบันของอุปกรณ์เพื่อช่วยระบุว่าอุปกรณ์อยู่ที่ ที่อยู่ที่ระบุไว้ (ผู้ใช้ควรอยู่ที่บ้านเพื่อให้ดำเนินการได้ เมื่อลงชื่อสมัครใช้) | |
เคล็ดลับเพื่อยกระดับฟีเจอร์ Quick & การลงชื่อสมัครใช้ที่ยืนยันแล้ว | คุณสามารถปรับปรุงการป้อนที่อยู่ให้มีประสิทธิภาพยิ่งขึ้นไปอีกด้วยการเพิ่ม การปรับแต่งรูปลักษณ์ของวิดเจ็ตการเติมข้อความอัตโนมัติ หรือ ซึ่งช่วยให้ผู้ใช้เลือกชื่อธุรกิจหรือจุดสังเกตเป็น ที่อยู่ |
การเพิ่มการเติมข้อความอัตโนมัติในช่องป้อนข้อมูล
ตัวอย่างนี้ใช้ข้อมูลต่อไปนี้ Places SDK สำหรับ Android | ตัวเลือกดังกล่าวมีดังนี้ iOS | JavaScript |
การเติมข้อมูลอัตโนมัติทำให้การป้อนที่อยู่ในแอปพลิเคชันของคุณง่ายขึ้น และนำไปสู่ เป็นอัตรา Conversion ที่สูงขึ้น และมอบประสบการณ์ที่ราบรื่นให้กับลูกค้า การเติมข้อความอัตโนมัติมีฟิลด์เดียวสำหรับป้อนข้อมูลอย่างรวดเร็วด้วย "type-ahead" ที่อยู่ การคาดการณ์ที่ใช้เพื่อสร้างแบบฟอร์มที่อยู่สำหรับการลงชื่อสมัครใช้โดยอัตโนมัติได้ เมื่อคุณรวมการเติมข้อมูลสถานที่อัตโนมัติไว้ในขั้นตอนการลงชื่อสมัครใช้ของคุณ คุณจะสามารถทำสิ่งต่อไปนี้ได้
- ลดข้อผิดพลาดในการป้อนที่อยู่
- ลดจำนวนขั้นตอนในการลงชื่อสมัครใช้
- ลดความซับซ้อนในการป้อนข้อมูลอีเมลบนอุปกรณ์เคลื่อนที่หรืออุปกรณ์ที่สวมใส่ได้
- ลดการกดแป้นพิมพ์และเวลาทั้งหมดที่จำเป็นสำหรับการลงชื่อสมัครใช้ของลูกค้าลงได้อย่างมาก
เมื่อผู้ใช้เลือกช่องเติมข้อความอัตโนมัติ และเริ่มพิมพ์ รายการ การคาดคะเนที่อยู่ปรากฏขึ้น
เมื่อผู้ใช้เลือกที่อยู่จากรายการการคาดการณ์ คุณจะสามารถใช้ การตอบกลับเพื่อยืนยันที่อยู่และรับตำแหน่ง การสมัครของคุณ จะสามารถป้อนข้อมูลในฟิลด์ที่ถูกต้องของแบบฟอร์มรายการที่อยู่ ดังที่แสดงใน รูปต่อไปนี้
วิดีโอ: ปรับปรุงแบบฟอร์มที่อยู่ด้วยการเติมข้อความอัตโนมัติในสถานที่
แบบฟอร์มที่อยู่
Android
iOS
เว็บ
Google Maps Platform มีวิดเจ็ตการเติมข้อความอัตโนมัติในสถานที่สำหรับอุปกรณ์เคลื่อนที่ แพลตฟอร์มและเว็บ วิดเจ็ตที่แสดงในรูปก่อนหน้าจะระบุ ที่มีฟังก์ชันเติมข้อความอัตโนมัติในตัว ซึ่งทำให้คุณสามารถ เพิ่มประสิทธิภาพสำหรับการค้นหาที่กำหนดขอบเขตสถานที่ตั้ง
ส่วนนี้จะอธิบายวิธีใช้การเติมข้อความอัตโนมัติในสถานที่สำหรับ "ด่วนและ" การลงชื่อสมัครใช้ที่ยืนยันแล้ว
การเพิ่มวิดเจ็ตเติมข้อความอัตโนมัติของสถานที่
ใน Android คุณสามารถเพิ่มวิดเจ็ตการเติมข้อความอัตโนมัติโดยใช้ เติมข้อความ Intent ซึ่งจะเปิดใช้งานการเติมข้อความอัตโนมัติจากฟิลด์ป้อนที่อยู่บรรทัดที่ 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
(ในกรณีนี้คือการเพิ่มส่วนย่อยแบบไดนามิก) - การใช้แฮนเดิลกับส่วนย่อยและการลงทะเบียน Callback
- การจัดรูปแบบและการเพิ่มเครื่องหมายลงในแผนที่
- การปิดใช้การควบคุมแผนที่
กำลังเพิ่ม 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
ในการรับแฮนเดิลส่วนย่อย ให้เรียกเมธอด
FragmentManager.findFragmentById
และส่งต่อ รหัสทรัพยากรของส่วนย่อยในไฟล์เลย์เอาต์ หากคุณเพิ่มส่วนย่อย แบบไดนามิก ให้ข้ามขั้นตอนนี้เนื่องจากคุณได้เรียกข้อมูลแฮนเดิลแล้วเรียกใช้เมธอด
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 เพื่อจํากัด การโต้ตอบ
การเปรียบเทียบที่อยู่ที่ผู้ใช้ป้อนกับตำแหน่งของอุปกรณ์
การขอหลักฐานแสดงที่อยู่ - มั่นใจว่าผู้ใช้อยู่ที่ ที่อยู่ที่ป้อนอาจซับซ้อนตามปัจจัยต่างๆ เช่น ระยะไกล สถานที่ตั้งของผู้ใช้ ผู้ใช้ที่ย้ายไปยังที่อยู่ใหม่ หรือธุรกิจดิจิทัล (เช่น ธนาคารดิจิทัล) ที่ไม่มีสถานที่ตั้งจริงที่ผู้ใช้ สามารถเข้าชม เพื่อแสดงหลักฐานแสดงที่อยู่พร้อมด้วยใบเรียกเก็บเงินค่าสาธารณูปโภคหรือ เอกสารประกอบ การระบุวิธีดิจิทัลในการยืนยันที่อยู่ของผู้ใช้ คุณจะสร้างประสบการณ์การลงชื่อสมัครใช้ที่รวดเร็วและราบรื่น
ความปลอดภัยเป็นสิ่งสำคัญที่สุดในการเข้ารับการตรวจสอบที่อยู่ โดยเฉพาะอย่างยิ่งหากมี ขั้นตอนการลงชื่อสมัครใช้ ส่วนนี้จะให้คำแนะนำและตัวอย่างสำหรับการตรวจสอบ สถานที่ตั้งของผู้ใช้ขณะลงชื่อสมัครใช้ตรงกับที่อยู่ที่ผู้ใช้ป้อนหรือไม่ ได้เอง
กระบวนการเปรียบเทียบที่อยู่ที่ป้อนกับตำแหน่งของอุปกรณ์เกี่ยวข้องกับ ขั้นตอนต่อไปนี้
- การแปลงที่อยู่ที่ผู้ใช้ป้อนเป็นพิกัดทางภูมิศาสตร์
- การแจ้งผู้ใช้เพื่อขอสิทธิ์ในการรับตำแหน่งอุปกรณ์
- การคำนวณระยะห่างระหว่างที่อยู่ที่ป้อนกับตำแหน่งอุปกรณ์ คุณจะได้กำหนด ระยะทางสูงสุดที่นับรวมในการจับคู่ตำแหน่งที่อยู่
รูปต่อไปนี้เป็นตัวอย่างของวิธีที่คุณจะแจ้งให้ผู้ใช้เปรียบเทียบ ที่อยู่ที่ป้อนลงในตำแหน่งปัจจุบัน
การแปลงที่อยู่ที่ผู้ใช้ป้อนเป็นพิกัดทางภูมิศาสตร์
ตัวอย่างนี้ใช้ข้อมูลต่อไปนี้ 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 ที่คุณสร้างขึ้นด้วยบริการเติมข้อความอัตโนมัติในสถานที่