เพิ่มสถานที่อัตโนมัติ (ใหม่)

เลือกแพลตฟอร์ม: Android iOS JavaScript เว็บเซอร์วิส

นักพัฒนาซอฟต์แวร์ในเขตเศรษฐกิจยุโรป (EEA)

บริการเติมข้อความอัตโนมัติ (ใหม่) เป็น iOS API ที่แสดงคำแนะนำสถานที่เพื่อตอบสนองต่อคำขอ ในคำขอ ให้ระบุสตริงการค้นหาข้อความและขอบเขตทางภูมิศาสตร์ที่ควบคุมพื้นที่การค้นหา

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

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

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

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

คุณผสานรวมฟังก์ชันการเติมข้อความอัตโนมัติ (ใหม่) เข้ากับแอปได้ 2 วิธีหลักๆ ดังนี้

รับการคาดคะเนสถานที่แบบเป็นโปรแกรม

คำขอเติมข้อความอัตโนมัติ (ใหม่)

สร้างคำขอเติมข้อความอัตโนมัติโดยเรียกใช้เมธอดใน GMSPlacesClient คุณสามารถส่งพารามิเตอร์ในออบเจ็กต์ GMSAutocompleteRequest ได้ การตอบกลับจะแสดงคำแนะนำที่เติมข้อความอัตโนมัติภายในออบเจ็กต์ GMSAutocompletePlaceSuggestion

ต้องระบุคีย์ API และพารามิเตอร์ query นอกจากนี้ คุณยังสามารถใส่ GMSAutocompleteSessionToken เพื่อเชื่อมโยงคำขอกับเซสชันการเรียกเก็บเงินและ GMSAutocompleteFilter เพื่อใช้กับผลลัพธ์ได้ด้วย

เวอร์ชัน Places Swift SDK

สร้างคำขอเติมข้อความอัตโนมัติโดยเรียกใช้เมธอดใน PlacesClient คุณสามารถส่งพารามิเตอร์ในออบเจ็กต์ AutocompleteRequest ได้ การตอบกลับจะแสดงคำแนะนำที่เติมข้อความอัตโนมัติภายในออบเจ็กต์ AutocompletePlaceSuggestion

ต้องระบุคีย์ API และพารามิเตอร์ query นอกจากนี้ คุณยังสามารถใส่ AutocompleteSessionToken เพื่อเชื่อมโยงคำขอกับเซสชันการเรียกเก็บเงินและ AutocompleteFilter เพื่อใช้กับผลลัพธ์ได้ด้วย

ดูข้อมูลเพิ่มเติมเกี่ยวกับพารามิเตอร์ที่ต้องระบุและพารามิเตอร์ที่ไม่บังคับได้ที่ส่วนพารามิเตอร์ของเอกสารนี้

Places Swift SDK

let center = (37.3913916, -122.0879074)
let northEast = (37.388162, -122.088137)
let southWest = (37.395804, -122.077023)

let bias = RectangularCoordinateRegion(northEast: northEast, southWest: southWest)
let filter = AutocompleteFilter(types: [ .restaurant ], origin: center, coordinateRegionBias: bias)

let autocompleteRequest = AutocompleteRequest(query: "Sicilian piz", filter: filter)
switch await placesClient.fetchAutocompleteSuggestions(with: autocompleteRequest) {
case .success(let autocompleteSuggestions):
  // Handle suggestions.
case .failure(let placesError):
  // Handle error.
}

Swift

let token = GMSAutocompleteSessionToken()

let northWestBounds = CLLocationCoordinate2DMake(40.921628, -73.700051)
let southEastBounds = CLLocationCoordinate2DMake(40.477398, -74.259087)

let filter = GMSAutocompleteFilter()
filter.types = [kGMSPlaceTypeRestaurant]
filter.locationBias = GMSPlaceRectangularLocationOption(northWestBounds, southEastBounds)

let request = GMSAutocompleteRequest(query:"Spagh")
request.filter = filter
request.sessionToken = token

GMSPlacesClient.shared().fetchAutocompleteSuggestions(from: request, callback: { ( results, error ) in
      if let error = error {
        print("Autocomplete error: \(error)")
        return
      }
      if let autocompleteResults = results {
        for result in autocompleteResults {
          print("Result \(String(describing: result.placeSuggestion?.placeID)) with \(String(describing: result.placeSuggestion?.attributedFullText))")
        }
      }
    })

Objective-C

CLLocationCoordinate2D northEast = CLLocationCoordinate2DMake(37.388162, -122.088137);
CLLocationCoordinate2D southWest = CLLocationCoordinate2DMake(37.395804, -122.077023);

GMSAutocompleteFilter *filter = [[GMSAutocompleteFilter alloc] init];
filter.types = @[ kGMSPlaceTypeRestaurant ];
filter.locationBias = GMSPlaceRectangularLocationOption(northEast, southWest);
GMSAutocompleteRequest *request = [[GMSAutocompleteRequest alloc] initWithQuery:@"Sicilian piz"];
request.sessionToken = token;
request.filter = filter;

[[GMSPlacesClient sharedClient] fetchAutocompleteSuggestionsFromRequest:request callback:^(NSArray<GMSAutocompleteSuggestion *> * results, NSError * error){
  // Handle response
  for (GMSAutocompleteSuggestion *suggestion in results) {
    if (suggestion.placeSuggestion) {
      // Show place suggestion data.
    }
  }
}];

การตอบกลับการเติมข้อความอัตโนมัติ (ใหม่)

การเติมข้อความอัตโนมัติจะแสดงผลอาร์เรย์ของอินสแตนซ์ GMSAutocompleteSuggestion สูงสุด 5 รายการ อาร์เรย์ประกอบด้วยข้อมูลต่อไปนี้

  • placeID
  • types: ประเภทที่ใช้กับสถานที่นี้
  • distanceMeters: ระยะทางจากจุดเริ่มต้น
  • attributedFullText: ข้อความคำแนะนำแบบเต็มที่มนุษย์อ่านได้
  • attributedPrimaryText: ข้อความหลักของคำแนะนำที่มนุษย์อ่านได้
  • attributedSecondaryText: ข้อความรองของคำแนะนำที่มนุษย์อ่านได้
  • structuredFormat: ชื่อที่เฉพาะเจาะจงและข้อความที่ช่วยแยกความกำกวม เช่น เมืองหรือภูมิภาค

พารามิเตอร์ที่จำเป็น

query

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

พารามิเตอร์ที่ไม่บังคับ

sessionToken

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

คุณสามารถแสดงโทเค็นของเซสชันการเติมข้อความอัตโนมัติของ Places เพื่อส่งไปยังบริการอื่นๆ ที่ไม่ได้เป็นส่วนหนึ่งของ Places SDK สำหรับ iOS เช่น Address Validation

Places Swift SDK

let token = AutocompleteSessionToken()
let filter = AutocompleteFilter(origin: CLLocationCoordinate2DMake(39.7, -94.5))
let request = AutocompleteRequest(query: "Piz", sessionToken: token, filter: filter)

PlacesClient.shared.fetchAutocompleteSuggestions(request: request) {
    case .success(let suggestions):
      ...
    case .failure(let placesError):
      print(placesError) 
}

// pass token's string format to use with a service that is not a part of iOS SDK.
print("token: \(token)")

Objective-C

GMSAutocompleteRequest *request = [[GMSAutocompleteRequest alloc] initWithQuery:@"Piz"];
GMSAutocompleteSessionToken *token = [[GMSAutocompleteSessionToken alloc] init];
request.sessionToken = token;

GMSAutocompleteFilter *filter = [[GMSAutocompleteFilter alloc] init];
filter.origin = [[CLLocation alloc] initWithLatitude:39.7 longitude:-94.5];
filter.locationBias = GMSPlaceRectangularLocationOption(topLocation, bottomLocation);

request.filter = filter;
 [[GMSPlacesClient sharedClient] fetchAutocompleteSuggestionsFromRequest:request
                     callback:^(NSArray<GMSAutocompleteSuggestion *> *_Nullable results,
                                NSError *_Nullable error) {
  ...
}];

// pass token's string format to use with a service that is not a part of iOS SDK.
NSLog(@"%@", token.description);

ดูข้อมูลเพิ่มเติมได้ที่โทเค็นของเซสชัน

พารามิเตอร์ AutocompleteFilter ที่ไม่บังคับ

ประเภท

สถานที่หนึ่งๆ จะมีประเภทหลักได้เพียงประเภทเดียวจากประเภทในตาราง ก หรือตาราง ขที่เชื่อมโยงกับสถานที่นั้น เช่น ประเภทหลักอาจเป็น mexican_restaurant หรือ steak_house

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

ใช้พารามิเตอร์นี้เพื่อระบุค่าประเภทได้สูงสุด 5 ค่าจากตาราง A หรือตาราง B สถานที่ต้องตรงกับค่าประเภทหลักที่ระบุค่าใดค่าหนึ่งจึงจะรวมอยู่ในการตอบกลับ

ระบบจะปฏิเสธคำขอพร้อมข้อผิดพลาด INVALID_REQUEST ในกรณีต่อไปนี้

  • มีการระบุมากกว่า 5 ประเภท
  • มีการระบุประเภทที่ไม่รู้จัก

เช่น หากต้องการจำกัดผลลัพธ์ให้แสดงเฉพาะร้านขายสินค้ากีฬา ให้ระบุประเภทนั้นใน AutocompleteFilter ดังนี้

Places Swift SDK

let filter = AutocompleteFilter(types: [ PlaceType(rawValue: "sporting_goods_store") ])
  

Swift

let filter = GMSAutocompleteFilter()
filter.types = ["sporting_goods_store"]
  

Objective-C

GMSAutocompleteFilter *filter = [[GMSAutocompleteFilter alloc] init];
filter.types = @[ "sporting_goods_store" ];

ประเทศ

รวมเฉพาะผลลัพธ์จากรายการภูมิภาคที่ระบุ ซึ่งระบุเป็นอาร์เรย์ของค่า ccTLD ("โดเมนระดับบนสุด") 2 อักขระสูงสุด 15 ค่า หากไม่ระบุ ระบบจะไม่ใช้ข้อจำกัดใดๆ กับการตอบกลับ เช่น หากต้องการจำกัดภูมิภาคเป็นเยอรมนีและฝรั่งเศส ให้ทำดังนี้

Places Swift SDK

let filter = AutocompleteFilter(countries: ["DE", "FR"])
  

Swift

let filter = GMSAutocompleteFilter()
filter.countries = ["DE", "FR"]

Objective-C

GMSAutocompleteFilter *filter = [[GMSAutocompleteFilter alloc] init];
filter.countries = @[ @"DE", @"FR" ];

หากคุณระบุทั้ง locationRestriction และ countries ผลลัพธ์จะอยู่ในพื้นที่ที่การตั้งค่าทั้ง 2 รายการตัดกัน

inputOffset

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

locationBias หรือ locationRestriction

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

  • locationBias ระบุพื้นที่ที่จะค้นหา ตำแหน่งนี้จะเป็นตำแหน่งที่ให้น้ำหนักพิเศษ ซึ่งหมายความว่าระบบจะแสดงผลลัพธ์รอบๆ ตำแหน่งที่ระบุ รวมถึงผลลัพธ์ที่อยู่นอกพื้นที่ที่ระบุ

  • locationRestriction ระบุพื้นที่ที่จะค้นหา ระบบจะไม่แสดงผลลัพธ์ที่อยู่นอกพื้นที่ที่ระบุ

ระบุภูมิภาค locationBias หรือ locationRestriction เป็นวิวพอร์ตสี่เหลี่ยมผืนผ้าหรือวงกลม

วงกลมจะกำหนดโดยจุดศูนย์กลางและรัศมีเป็นเมตร รัศมีต้องอยู่ระหว่าง 0.0 ถึง 50000.0 (รวมค่าแรกและค่าสุดท้าย) ค่าเริ่มต้นคือ 0.0 สำหรับ locationRestriction คุณต้องตั้งค่ารัศมีให้มากกว่า 0.0 ไม่เช่นนั้น คำขอจะไม่แสดงผลลัพธ์

เช่น

Places Swift SDK

let center = CLLocationCoordinate2DMake(40.477398, -74.259087)

let bias = CircularCoordinateRegion(center: center, radius: 1000.0)

let filter = AutocompleteFilter(coordinateRegionBias: bias)
  

Swift

let center = CLLocationCoordinate2DMake(40.730610, -73.935242)
let radius = 1000.0

filter.locationBias = GMSPlaceCircularLocationOption(center, radius)

Objective-C

CLLocationCoordinate2D center = CLLocationCoordinate2DMake(40.730610, -73.935242);
radius = 1000.0;

GMSAutocompleteFilter *filter = [[GMSAutocompleteFilter alloc] init];
filter.locationBias = GMSPlaceCircularLocationOption(center, radius);

สี่เหลี่ยมผืนผ้าคือวิวพอร์ตในรูปแบบละติจูด-ลองจิจูด ซึ่งกำหนดด้วยจุดสองจุดที่อยู่มุมตรงข้ามกัน โดยจุดหนึ่งเป็นค่า low และอีกจุดเป็นค่า high วิวพอร์ตถือเป็นพื้นที่ปิด ซึ่งหมายรวมถึงขอบเขตของตัววิวพอร์ตเองด้วย ขอบเขตละติจูดต้องอยู่ระหว่าง -90 ถึง 90 องศา และขอบเขตลองจิจูดต้องอยู่ระหว่าง -180 ถึง 180 องศา

  • หาก low = high วิวพอร์ตจะประกอบด้วยจุดเดียวดังกล่าว
  • หาก low.longitude > high.longitude หมายความว่าช่วงลองจิจูดกลับด้าน (วิวพอร์ตข้ามเส้นลองจิจูด 180 องศา)
  • หาก low.longitude = -180 องศา และ high.longitude= 180 องศา วิวพอร์ตจะครอบคลุมลองจิจูดทั้งหมด
  • หาก low.longitude = 180 องศา และ high.longitude = -180 องศา ช่วงลองจิจูดจะว่างเปล่า

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

ตัวอย่างเช่น วิวพอร์ตนี้ครอบคลุมนิวยอร์กซิตี้ทั้งหมด

Places Swift SDK

let northEast = CLLocationCoordinate2DMake(40.477398, -74.259087)
let southWest = CLLocationCoordinate2DMake(40.921628, -73.700051)

let filter = AutocompleteFilter(coordinateRegionBias: bias)
  

Swift

let high = CLLocationCoordinate2DMake(40.921628, -73.700051)
let low = CLLocationCoordinate2DMake(40.477398, -74.259087)

let filter = GMSAutocompleteFilter()
filter.locationBias = GMSPlaceRectangularLocationOption(high, low)

Objective-C

CLLocationCoordinate2D high = CLLocationCoordinate2DMake(40.477398, -74.259087);
CLLocationCoordinate2D low = CLLocationCoordinate2DMake(440.921628, -73.700051);

GMSAutocompleteFilter *filter = [[GMSAutocompleteFilter alloc] init];
filter.locationBias = GMSPlaceRectangularLocationOption(high, low);

origin

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

Places Swift SDK

let filter = AutocompleteFilter(origin: CLLocation(latitude: 37.395804, longitude: -122.077023))
  

Swift

let filter = GMSAutocompleteFilter()
filter.origin =  CLLocation(latitude: 37.395804, longitude: -122.077023)
 

Objective-C

GMSAutocompleteFilter *filter = [[GMSAutocompleteFilter alloc] init];

filter.origin = [[CLLocation alloc] initWithLatitude:37.395804 longitude: -122.077023];

regionCode

รหัสภูมิภาคที่ใช้จัดรูปแบบการตอบกลับ ซึ่งระบุเป็นค่า ccTLD ("โดเมนระดับบนสุด") 2 อักขระ รหัส ccTLD ส่วนใหญ่จะเหมือนกับรหัส ISO 3166-1 โดยมีข้อยกเว้นที่สำคัญบางประการ ตัวอย่างเช่น ccTLD ของสหราชอาณาจักรคือ "uk" (.co.uk) ขณะที่รหัส ISO 3166-1 คือ "gb" (ในทางเทคนิคสำหรับนิติบุคคล "สหราชอาณาจักรบริเตนใหญ่และไอร์แลนด์เหนือ")

หากคุณระบุรหัสภูมิภาคที่ไม่ถูกต้อง API จะแสดงข้อผิดพลาด INVALID_ARGUMENT พารามิเตอร์นี้อาจส่งผลต่อผลลัพธ์ตามกฎหมายที่เกี่ยวข้อง

shouldIncludePureServiceAreaBusinesses

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

เช่น

Places Swift SDK

let filter = AutocompleteFilter()
filter.shouldIncludePureServiceAreaBusinesses = true

Swift

let filter = AutocompleteFilter()
filter.shouldIncludePureServiceAreaBusinesses = true

Objective-C

GMSAutocompleteFilter *filter = [[GMSAutocompleteFilter alloc] init];
filter.shouldIncludePureServiceAreaBusinesses = YES;

เพิ่มวิดเจ็ต Place Autocomplete

คุณสามารถเพิ่มวิดเจ็ต Place Autocomplete ลงในแอปเพื่อให้ผู้ใช้ได้รับประสบการณ์ Place Autocomplete ที่สอดคล้องกันได้ง่ายขึ้น วิดเจ็ตนี้มีอินเทอร์เฟซแบบเต็มหน้าจอโดยเฉพาะซึ่งจะจัดการข้อมูลจากผู้ใช้และแสดงการคาดคะเนสถานที่แก่ผู้ใช้พร้อมกับแสดงผลออบเจ็กต์ AutocompletePlaceSuggestion ไปยังแอป จากนั้นคุณสามารถส่งคำขอรายละเอียดสถานที่ (ใหม่) เพื่อรับข้อมูลเพิ่มเติมเกี่ยวกับการคาดคะเนสถานที่ได้

วิดเจ็ต Place Autocomplete

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

หากคุณไม่ได้ระบุโทเค็นของเซสชัน วิดเจ็ตจะสร้างโทเค็นของเซสชันการเติมข้อความอัตโนมัติให้คุณ ซึ่งจะรับได้จาก Callback onSelection ดูข้อมูลเพิ่มเติมเกี่ยวกับการใช้โทเค็นของเซสชันได้ที่เกี่ยวกับโทเค็นของเซสชัน

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

พารามิเตอร์วิดเจ็ต Place Autocomplete

นอกจากพารามิเตอร์ที่ใช้ได้แบบเป็นโปรแกรมแล้ว วิดเจ็ต Place Autocomplete ยังมีพารามิเตอร์ต่อไปนี้ด้วย

แสดง

show ระบุว่าจะแสดงวิดเจ็ตหรือไม่

onSelection

การปิดที่จะเรียกใช้เมื่อเลือกสถานที่

onError

การปิดเพื่อเรียกใช้เมื่อเกิดข้อผิดพลาด ระบบจะส่ง PlacesError หากเกิดข้อผิดพลาด

การปรับแต่งเนื้อหาและธีม

พารามิเตอร์ AutocompleteUICustomization จะระบุการปรับแต่ง UI ที่จะใช้กับวิดเจ็ต โดยตัวเลือกการปรับแต่งมีดังนี้

  • AutocompleteListDensity พารามิเตอร์นี้ช่วยให้คุณเลือกความหนาแน่นของรายการคำแนะนำได้ ไม่ว่าจะเป็น multiLine หรือ twoLine
  • AutocompleteUIIcon พารามิเตอร์นี้ช่วยให้คุณเลือกได้ว่าจะแสดงไอคอนเริ่มต้นสำหรับรายการแต่ละรายการหรือไม่
  • theme พารามิเตอร์นี้ระบุธีมที่กำหนดเองซึ่งจะลบล้างแอตทริบิวต์สไตล์เริ่มต้นทั้งหมด คุณสามารถปรับแต่งสี การพิมพ์ ระยะห่าง เส้นขอบ และมุมของคอมโพเนนต์การเติมสถานที่อัตโนมัติได้ ค่าเริ่มต้นคือ PlacesMaterialTheme แอตทริบิวต์ธีมที่ไม่ได้ลบล้างจะใช้สไตล์เริ่มต้น

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

ตัวอย่างการเติมข้อความอัตโนมัติ (ใหม่)

ใช้ locationRestriction และ locationBias

การเติมข้อความอัตโนมัติ (ใหม่) จะใช้การให้น้ำหนัก IP โดยค่าเริ่มต้นเพื่อควบคุมพื้นที่การค้นหา เมื่อใช้การให้น้ำหนัก IP, API จะใช้ที่อยู่ IP ของอุปกรณ์เพื่อให้น้ำหนักผลลัพธ์ คุณสามารถเลือกใช้ locationRestriction หรือ locationBias เพื่อระบุพื้นที่ที่จะค้นหาได้ แต่จะใช้ทั้ง 2 อย่างไม่ได้

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

Places Swift SDK

let center = (37.775061, -122.419400)
let radius = 5000.0
let restriction = CircularCoordinateRegion(center: center, radius: radius)
let filter = AutocompleteFilter(coordinateRegionRestriction: restriction)
let token = AutocompleteSessionToken()

let autocompleteRequest = AutocompleteRequest(query: "Sicilian piz", sessionToken: token, filter: filter)
switch await placesClient.fetchAutocompleteSuggestions(with: autocompleteRequest) {
case .success(let autocompleteSuggestions):
  for suggestion in autocompleteSuggestions {
    switch suggestion {
    case .place:
      // Show place suggestion data.
    }
  }
case .failure(let placesError):
  // Handle error.
}
  

Swift

let token = GMSAutocompleteSessionToken()

let center = CLLocationCoordinate2DMake(37.775061, -122.419400)
let radius = 5000.0

let filter = GMSAutocompleteFilter()
filter.locationRestriction = GMSPlaceCircularLocationOption(center, radius)

let request = GMSAutocompleteRequest(query:"Piz")
request.filter = filter
request.sessionToken = token

GMSPlacesClient.shared().fetchAutocompleteSuggestions(from: request, callback: { ( results, error ) in
      if let error = error {
        print("Autocomplete error: \(error)")
        return
      }
      if let autocompleteResults = results {
        for result in autocompleteResults {
          print("Result \(String(describing: result.placeSuggestion?.placeID)) with \(String(describing: result.placeSuggestion?.attributedFullText))")
        }
      }
    })

Objective-C

CLLocationCoordinate2D center = CLLocationCoordinate2DMake(37.775061, -122.419400);
radius = 5000.0;

GMSAutocompleteFilter *filter = [[GMSAutocompleteFilter alloc] init];
filter.locationRestriction = GMSPlaceCircularLocationOption(center, radius);
GMSAutocompleteRequest *request = [[GMSAutocompleteRequest alloc] initWithQuery:@"Sicilian piz"];
request.sessionToken = token;
request.filter = filter;

[[GMSPlacesClient sharedClient] fetchAutocompleteSuggestionsFromRequest:request callback:^(NSArray<GMSAutocompleteSuggestion *> * results, NSError * error){
  // Handle response
  for (GMSAutocompleteSuggestion *suggestion in results) {
    if (suggestion.placeSuggestion) {
      // Show place suggestion data.
    }
  }
}];

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

Places Swift SDK

let center = (37.775061, -122.419400)
let radius = 5000.0
let bias = CircularCoordinateRegion(center: center, radius: radius)
let filter = AutocompleteFilter(coordinateRegionBias: bias)
let token = AutocompleteSessionToken()

let autocompleteRequest = AutocompleteRequest(query: "Sicilian piz", sessionToken: token, filter: filter)
switch await placesClient.fetchAutocompleteSuggestions(with: autocompleteRequest) {
case .success(let autocompleteSuggestions):
  for suggestion in autocompleteSuggestions {
    switch suggestion {
    case .place:
      // Show place suggestion data.
    }
  }
case .failure(let placesError):
  // Handle error.
}
  

Swift

let token = GMSAutocompleteSessionToken()

let center = CLLocationCoordinate2DMake(37.775061, -122.419400)
let radius = 5000.0

let filter = GMSAutocompleteFilter()
filter.locationBias = GMSPlaceCircularLocationOption(center, radius)

let request = GMSAutocompleteRequest(query:"Piz")
request.filter = filter
request.sessionToken = token

GMSPlacesClient.shared().fetchAutocompleteSuggestions(from: request, callback: { ( results, error ) in
      if let error = error {
        print("Autocomplete error: \(error)")
        return
      }
      if let autocompleteResults = results {
        for result in autocompleteResults {
          print("Result \(String(describing: result.placeSuggestion?.placeID)) with \(String(describing: result.placeSuggestion?.attributedFullText))")
        }
      }
    })

Objective-C

CLLocationCoordinate2D center = CLLocationCoordinate2DMake(37.775061, -122.419400);
radius = 5000.0;

GMSAutocompleteFilter *filter = [[GMSAutocompleteFilter alloc] init];
filter.locationBias = GMSPlaceCircularLocationOption(center, radius);
GMSAutocompleteRequest *request = [[GMSAutocompleteRequest alloc] initWithQuery:@"Sicilian piz"];
request.sessionToken = token;
request.filter = filter;

[[GMSPlacesClient sharedClient] fetchAutocompleteSuggestionsFromRequest:request callback:^(NSArray<GMSAutocompleteSuggestion *> * results, NSError * error){
  // Handle response
  for (GMSAutocompleteSuggestion *suggestion in results) {
    if (suggestion.placeSuggestion) {
      // Show place suggestion data.
    }
  }
}];

ประเภทการใช้งาน

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

ตัวอย่างต่อไปนี้ระบุสตริงการค้นหา "Soccer" และใช้พารามิเตอร์ types เพื่อจำกัดผลการค้นหาให้แสดงเฉพาะสถานที่ตั้งประเภท "sporting_goods_store"

Places Swift SDK

let filter = AutocompleteFilter(types: [ PlaceType(rawValue: "sporting_goods_store") ])
let token = AutocompleteSessionToken()

let autocompleteRequest = AutocompleteRequest(query: "Soccer", sessionToken: token, filter: filter)
switch await placesClient.fetchAutocompleteSuggestions(with: autocompleteRequest) {
case .success(let autocompleteSuggestions):
  for suggestion in autocompleteSuggestions {
    switch suggestion {
    case .place:
      // Show place suggestion data.
    }
  }
case .failure(let placesError):
  // Handle error.
}
    

Swift

let token = GMSAutocompleteSessionToken()

let filter = GMSAutocompleteFilter()
filter.types = ["sporting_goods_store"]

let request = GMSAutocompleteRequest(query:"Soccer")
request.filter = filter
request.sessionToken = token

GMSPlacesClient.shared().fetchAutocompleteSuggestions(from: request, callback: { ( results, error ) in
      if let error = error {
        print("Autocomplete error: \(error)")
        return
      }
      if let autocompleteResults = results {
        for result in autocompleteResults {
          print("Result \(String(describing: result.placeSuggestion?.placeID)) with \(String(describing: result.placeSuggestion?.attributedFullText))")
        }
      }
    })

Objective-C

GMSAutocompleteFilter *filter = [[GMSAutocompleteFilter alloc] init];
filter.types = @[ "sporting_goods_store" ];
GMSAutocompleteRequest *request = [[GMSAutocompleteRequest alloc] initWithQuery:@"Soccer"];
request.sessionToken = token;
request.filter = filter;

[[GMSPlacesClient sharedClient] fetchAutocompleteSuggestionsFromRequest:request callback:^(NSArray<GMSAutocompleteSuggestion *> * results, NSError * error){
  // Handle response
  for (GMSAutocompleteSuggestion *suggestion in results) {
    if (suggestion.placeSuggestion) {
      // Show place suggestion data.
    }
  }
}];

ใช้ต้นทาง

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

ตัวอย่างนี้ตั้งค่าจุดเริ่มต้นเป็นใจกลางเมืองซานฟรานซิสโก

Places Swift SDK

let filter = AutocompleteFilter(origin: CLLocation(latitude: 37.7749, longitude: -122.4194))
let token = AutocompleteSessionToken()

let autocompleteRequest = AutocompleteRequest(query: "Amoeba", sessionToken: token, filter: filter)
switch await placesClient.fetchAutocompleteSuggestions(with: autocompleteRequest) {
case .success(let autocompleteSuggestions):
  for suggestion in autocompleteSuggestions {
    switch suggestion {
    case .place:
      // Show place suggestion data.
    }
  }
case .failure(let placesError):
  // Handle error.
}
  

Swift

let token = GMSAutocompleteSessionToken()

let origin = CLLocation(latitude: 37.7749, longitude: -122.4194)

let filter = GMSAutocompleteFilter()

filter.origin =  origin

let request = GMSAutocompleteRequest(query:"Amoeba")
request.filter = filter
request.sessionToken = token

GMSPlacesClient.shared().fetchAutocompleteSuggestions(from: request, callback: { ( results, error ) in
      if let error = error {
        print("Autocomplete error: \(error)")
        return
      }
      if let autocompleteResults = results {
        for result in autocompleteResults {
          print("Result \(String(describing: result.placeSuggestion?.placeID)) with \(String(describing: result.placeSuggestion?.attributedFullText)) and distance: \(String(describing: result.placeSuggestion?.distanceMeters))")
        }
      }
    })

Objective-C

GMSAutocompleteFilter *filter = [[GMSAutocompleteFilter alloc] init];
filter.origin = [[CLLocation alloc] initWithLatitude:37.395804 longitude:-122.077023];
GMSAutocompleteRequest *request = [[GMSAutocompleteRequest alloc] initWithQuery:@"Amoeba"];
request.sessionToken = token;
request.filter = filter;

[[GMSPlacesClient sharedClient] fetchAutocompleteSuggestionsFromRequest:request callback:^(NSArray<GMSAutocompleteSuggestion *> * results, NSError * error){
  // Handle response
  for (GMSAutocompleteSuggestion *suggestion in results) {
    if (suggestion.placeSuggestion) {
      // Show place suggestion data.
      }
    }
}];

ปรับแต่งเนื้อหาและธีม

Swift

let uiCustomization = AutocompleteUICustomization(
    listDensity: .multiLine,
    listItemIcon: .noIcon,
    theme: PlacesMaterialTheme()
)

เพิ่มวิดเจ็ต Place Autocomplete (โค้ดแบบเต็ม)

Places Swift SDK

struct PlaceAutocompleteDemoView: View {

  @State private var fetchedPlace: Place?
  @State private var placesError: PlacesError?
  @State private var showWidget = false

  public var body: some View {
    VStack {
      Button("Search for a place") {
        showWidget.toggle()
      }
      .placeAutocomplete(
        show: $showWidget,
        onSelection: { (autocompletePlaceSuggestion, autocompleteSessionToken) in
          Task {
            let placesClient = await PlacesClient.shared
            let fetchPlaceRequest = FetchPlaceRequest(
              placeID: autocompletePlaceSuggestion.placeID,
              placeProperties: [.displayName, .formattedAddress],
              sessionToken: autocompleteSessionToken
            )

            switch await placesClient.fetchPlace(with: fetchPlaceRequest) {
            case .success(let place):
              print("Fetched place: \(place)")
              self.fetchedPlace = place
            case .failure(let placesError):
              print("Failed to fetch place: \(placesError)")
              self.placesError = placesError
            }
          }
        },
        onError: { placesError in
          self.placesError = placesError
        }
      )
    }
  }
}

การเพิ่มประสิทธิภาพการเติมข้อความอัตโนมัติ (ใหม่)

ส่วนนี้จะอธิบายแนวทางปฏิบัติแนะนำเพื่อช่วยให้คุณใช้ประโยชน์จากบริการเติมข้อความอัตโนมัติ (ใหม่) ได้อย่างเต็มที่

หลักเกณฑ์ทั่วไปมีดังนี้

  • วิธีที่เร็วที่สุดในการพัฒนาอินเทอร์เฟซผู้ใช้ที่ใช้งานได้คือการใช้ วิดเจ็ตการเติมข้อความอัตโนมัติ (ใหม่) ของ Maps JavaScript API, วิดเจ็ตการเติมข้อความอัตโนมัติ (ใหม่) ของ Places SDK สำหรับ Android หรือวิดเจ็ตการเติมข้อความอัตโนมัติ (ใหม่) ของ Places SDK สำหรับ iOS
  • ทำความเข้าใจฟิลด์ข้อมูลที่สำคัญของการเติมข้อความอัตโนมัติ (ใหม่) ตั้งแต่เริ่มต้น
  • ช่องการให้น้ำหนักตามสถานที่และการจำกัดสถานที่ตั้งเป็นช่องที่ไม่บังคับ แต่ก็อาจส่งผลต่อประสิทธิภาพการเติมข้อความอัตโนมัติอย่างมาก
  • ใช้การจัดการข้อผิดพลาดเพื่อให้แน่ใจว่าแอปจะลดระดับลงอย่างราบรื่นหาก API แสดงข้อผิดพลาด
  • ตรวจสอบว่าแอปของคุณจัดการกรณีที่ไม่มีการเลือกและเสนอวิธีให้ผู้ใช้ดำเนินการต่อ

แนวทางปฏิบัติแนะนำในการเพิ่มประสิทธิภาพต้นทุน

การเพิ่มประสิทธิภาพต้นทุนพื้นฐาน

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

การเพิ่มประสิทธิภาพต้นทุนขั้นสูง

พิจารณาการติดตั้งใช้งาน Autocomplete (ใหม่) แบบเป็นโปรแกรมเพื่อเข้าถึง SKU: ราคาคำขอเติมข้อความอัตโนมัติ และขอผลลัพธ์ Geocoding API เกี่ยวกับสถานที่ที่เลือกแทนรายละเอียดสถานที่ (ใหม่) ราคาต่อคำขอที่จับคู่กับ Geocoding API จะคุ้มค่ากว่าราคาต่อเซสชัน (อิงตามเซสชัน) หากเป็นไปตามเงื่อนไขทั้ง 2 ข้อต่อไปนี้

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

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

หากต้องการค้นหาจำนวนคำขอเฉลี่ยสำหรับตาราง ให้วิเคราะห์จำนวนอักขระที่ผู้ใช้พิมพ์โดยเฉลี่ยก่อนเลือกการคาดคะเนการเติมข้อความอัตโนมัติ (ใหม่) ในแอปพลิเคชัน

การเติมข้อความอัตโนมัติตามเซสชัน (ใหม่) พร้อมรายละเอียดสถานที่ (ใหม่)

ใช้การเติมข้อความอัตโนมัติตามเซสชัน (ใหม่) กับรายละเอียดสถานที่ (ใหม่)
เนื่องจากแอปพลิเคชันของคุณต้องใช้รายละเอียดสถานที่ (ใหม่) เช่น ชื่อสถานที่ สถานะธุรกิจ หรือเวลาทำการ การใช้งานการเติมข้อความอัตโนมัติ (ใหม่) จึงควรใช้โทเค็นของเซสชัน (แบบเป็นโปรแกรมหรือฝังอยู่ในวิดเจ็ต JavaScript, Android หรือ iOS) ต่อเซสชัน บวกกับ SKU ของ Places ที่เกี่ยวข้อง โดยขึ้นอยู่กับฟิลด์ข้อมูลสถานที่ที่คุณขอ1

การติดตั้งใช้งานวิดเจ็ต
การจัดการเซสชันจะติดตั้งมาในวิดเจ็ต JavaScript, Android หรือ iOS โดยอัตโนมัติ ซึ่งรวมถึงทั้งคำขอการเติมข้อความอัตโนมัติ (ใหม่) และคำขอรายละเอียดสถานที่ (ใหม่) ในการคาดคะเนที่เลือก อย่าลืมระบุพารามิเตอร์ fields เพื่อให้มั่นใจว่าคุณขอเฉพาะฟิลด์ข้อมูลการเติมข้อความอัตโนมัติ (ใหม่) ที่ต้องการเท่านั้น

การติดตั้งใช้งานแบบเป็นโปรแกรม
ใช้โทเค็นของเซสชันกับคำขอเติมข้อความอัตโนมัติ (ใหม่) เมื่อขอรายละเอียดสถานที่ (ใหม่) เกี่ยวกับการคาดคะเนที่เลือก ให้ใส่พารามิเตอร์ต่อไปนี้

  1. รหัสสถานที่จากการตอบกลับการเติมข้อความอัตโนมัติ (ใหม่)
  2. โทเค็นของเซสชันที่ใช้ในคำขอการเติมข้อความอัตโนมัติ (ใหม่)
  3. พารามิเตอร์ fields ที่ระบุฟิลด์ข้อมูลของการเติมข้อความอัตโนมัติ (ใหม่) ที่คุณต้องการ

การเติมข้อความอัตโนมัติ (ใหม่) ต่อคำขอด้วย Geocoding API

ใช้การเติมข้อความอัตโนมัติ (ใหม่) แบบเป็นโปรแกรมโดยไม่มีโทเค็นของเซสชัน และเรียกใช้ Geocoding API ในการคาดคะเนสถานที่ที่เลือก
Geocoding API จะแสดงที่อยู่และพิกัดละติจูด/ลองจิจูด การส่งคำขอ Autocomplete Requests 4 รายการบวกกับการเรียกใช้ Geocoding API เกี่ยวกับการคาดคะเนสถานที่ที่เลือกจะมีค่าใช้จ่ายน้อยกว่าการใช้ Autocomplete (ใหม่) ต่อเซสชัน1

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

การเติมข้อความอัตโนมัติตามเซสชัน (ใหม่) สำหรับแอปพลิเคชันที่ใช้ที่อยู่เท่านั้น

ใช้การเติมข้อความอัตโนมัติตามเซสชัน (ใหม่) กับรายละเอียดสถานที่ (ใหม่)
เนื่องจากจำนวนคำขอโดยเฉลี่ยที่คุณคาดว่าจะทำก่อนที่ผู้ใช้จะเลือกการคาดคะเนการเติมข้อความอัตโนมัติ (ใหม่) เกินค่าใช้จ่ายของการกำหนดราคาต่อเซสชัน การใช้งานการเติมข้อความอัตโนมัติ (ใหม่) ของคุณจึงควรใช้โทเค็นของเซสชันสำหรับทั้งคำขอการเติมข้อความอัตโนมัติ (ใหม่) และคำขอรายละเอียดสถานที่ (ใหม่) ที่เกี่ยวข้อง ต่อเซสชัน 1

การติดตั้งใช้งานวิดเจ็ต
การจัดการเซสชันจะติดตั้งมาในวิดเจ็ต JavaScript, Android หรือ iOS โดยอัตโนมัติ ซึ่งรวมถึงทั้งคำขอ Autocomplete (ใหม่) และคำขอรายละเอียดสถานที่ (ใหม่) ในการคาดคะเนที่เลือก อย่าลืมระบุพารามิเตอร์ fields เพื่อให้แน่ใจว่าคุณขอเฉพาะช่องที่ต้องการเท่านั้น

การติดตั้งใช้งานแบบเป็นโปรแกรม
ใช้โทเค็นของเซสชันกับคำขอเติมข้อความอัตโนมัติ (ใหม่) เมื่อขอรายละเอียดสถานที่ (ใหม่) เกี่ยวกับการคาดคะเนที่เลือก ให้ใส่พารามิเตอร์ต่อไปนี้

  1. รหัสสถานที่จากการตอบกลับการเติมข้อความอัตโนมัติ (ใหม่)
  2. โทเค็นของเซสชันที่ใช้ในคำขอการเติมข้อความอัตโนมัติ (ใหม่)
  3. พารามิเตอร์ fields ที่ระบุ ช่อง เช่น ที่อยู่และเรขาคณิต

พิจารณาการหน่วงเวลาคำขอเติมข้อความอัตโนมัติ (ใหม่)
คุณสามารถใช้กลยุทธ์ต่างๆ เช่น การหน่วงเวลาคำขอเติมข้อความอัตโนมัติ (ใหม่) จนกว่าผู้ใช้จะพิมพ์อักขระ 3 หรือ 4 ตัวแรก เพื่อให้แอปพลิเคชันส่งคำขอน้อยลง ตัวอย่างเช่น การส่งคำขอ Autocomplete (ใหม่) สำหรับอักขระแต่ละตัวหลังจากที่ผู้ใช้พิมพ์อักขระตัวที่ 3 หมายความว่าหากผู้ใช้พิมพ์อักขระ 7 ตัวแล้วเลือกการคาดคะเนที่คุณส่งคำขอ Geocoding API 1 รายการ ค่าใช้จ่ายทั้งหมดจะเป็นค่าใช้จ่ายสำหรับ Autocomplete (ใหม่) 4 รายการต่อคำขอ + Geocoding1

หากการหน่วงเวลาคำขอทำให้คำขอแบบเป็นโปรแกรมโดยเฉลี่ยต่ำกว่า 4 รายการได้ คุณสามารถทำตามคำแนะนำสำหรับการติดตั้งใช้งาน Autocomplete (ใหม่) ที่มีประสิทธิภาพด้วย Geocoding API โปรดทราบว่าการหน่วงเวลาคำขออาจทำให้ผู้ใช้ที่คาดหวังว่าจะเห็นการคาดคะเนทุกครั้งที่กดแป้นพิมพ์ใหม่มองว่าเป็นเวลาในการตอบสนอง

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


  1. ดูค่าใช้จ่ายได้ที่รายการราคาของ Google Maps Platform

แนวทางปฏิบัติแนะนำด้านประสิทธิภาพ

หลักเกณฑ์ต่อไปนี้อธิบายวิธีเพิ่มประสิทธิภาพการเติมข้อความอัตโนมัติ (ใหม่)

  • เพิ่มข้อจำกัดในแต่ละประเทศ การให้น้ำหนักตามสถานที่ตั้ง และค่ากำหนดภาษา (สำหรับการติดตั้งใช้งานแบบเป็นโปรแกรม) ลงในการติดตั้งใช้งานการเติมข้อความอัตโนมัติ (ใหม่) ไม่จำเป็นต้องใช้ค่ากำหนดภาษาสำหรับวิดเจ็ต เนื่องจากวิดเจ็ตจะเลือกค่ากำหนดภาษาจากเบราว์เซอร์หรืออุปกรณ์เคลื่อนที่ของผู้ใช้
  • หากการเติมข้อความอัตโนมัติ (ใหม่) มาพร้อมกับแผนที่ คุณสามารถให้น้ำหนักสถานที่ตั้งตามวิวพอร์ตของแผนที่ได้
  • ในสถานการณ์ที่ผู้ใช้ไม่ได้เลือกการคาดคะเนของ Autocomplete (ใหม่) รายการใดรายการหนึ่ง โดยทั่วไปเป็นเพราะไม่มีการคาดคะเนใดที่เป็นที่อยู่ผลลัพธ์ที่ต้องการ คุณสามารถนำข้อมูลที่ผู้ใช้ป้อนไว้ในตอนแรกมาใช้ซ้ำเพื่อพยายามรับผลลัพธ์ที่เกี่ยวข้องมากขึ้นได้ ดังนี้
    • หากคาดว่าผู้ใช้จะป้อนเฉพาะข้อมูลที่อยู่ ให้นำข้อมูลที่ผู้ใช้ป้อนไว้เดิมมาใช้ซ้ำในการเรียกใช้ Geocoding API
    • หากคาดว่าผู้ใช้จะป้อนคำค้นหาสำหรับสถานที่ที่เฉพาะเจาะจงตามชื่อหรือที่อยู่ ให้ใช้คำขอรายละเอียดสถานที่ (ใหม่) หากคาดว่าผลลัพธ์จะอยู่ในภูมิภาคที่เฉพาะเจาะจงเท่านั้น ให้ใช้การให้น้ำหนักสถานที่ตั้ง
    สถานการณ์อื่นๆ ที่ควรเปลี่ยนไปใช้ Geocoding API ได้แก่
    • ผู้ใช้ป้อนที่อยู่ย่อย เช่น ที่อยู่ของยูนิตหรืออพาร์ตเมนต์ที่เฉพาะเจาะจงภายในอาคาร เช่น ที่อยู่ภาษาเช็ก "Stroupežnického 3191/17, Praha" จะแสดงการคาดคะเนบางส่วนในการเติมข้อความอัตโนมัติ (ใหม่)
    • ผู้ใช้ป้อนที่อยู่ที่มีคำนำหน้าส่วนถนน เช่น "23-30 29th St, Queens" ในนครนิวยอร์ก หรือ "47-380 Kamehameha Hwy, Kaneohe" บนเกาะคาไวในฮาวาย

การให้น้ำหนักพิเศษกับบางตำแหน่ง

ให้น้ำหนักผลการค้นหาไปยังพื้นที่ที่ระบุโดยส่งพารามิเตอร์ location และพารามิเตอร์ radius ซึ่งจะสั่งให้การเติมข้อความอัตโนมัติ (ใหม่) ต้องการแสดงผลลัพธ์ภายในพื้นที่ที่กำหนด ผลลัพธ์ที่อยู่นอกพื้นที่ที่กำหนดอาจยังคงแสดงอยู่ คุณสามารถใช้พารามิเตอร์ includedRegionCodes เพื่อกรองผลลัพธ์ให้แสดงเฉพาะสถานที่ภายในประเทศที่ระบุได้

การจำกัดสถานที่ตั้ง

จำกัดผลการค้นหาให้อยู่ในพื้นที่ที่ระบุโดยส่งพารามิเตอร์ locationRestriction

นอกจากนี้ คุณยังจำกัดผลการค้นหาให้อยู่ในภูมิภาคที่กำหนดโดย location และพารามิเตอร์ radius ได้ด้วยการเพิ่มพารามิเตอร์ locationRestriction ซึ่งจะสั่งให้การเติมข้อความอัตโนมัติ (ใหม่) แสดงผลลัพธ์เฉพาะภายในภูมิภาคนั้น