บริการการเข้ารหัสพิกัดภูมิศาสตร์

ภาพรวม

การระบุพิกัดทางภูมิศาสตร์คือกระบวนการแปลงที่อยู่ (เช่น "1600 Amphitheatre Parkway, Mountain View, CA") เป็นพิกัดทางภูมิศาสตร์ (เช่น ละติจูด 37.423021 และลองจิจูด -122.083739) ซึ่งคุณสามารถใช้วางเครื่องหมายหรือวางตำแหน่งแผนที่ได้

การระบุพิกัดทางภูมิศาสตร์แบบย้อนกลับเป็นกระบวนการแปลงพิกัดทางภูมิศาสตร์เป็นที่อยู่ที่มนุษย์อ่านได้ (ดูการระบุพิกัดทางภูมิศาสตร์แบบย้อนกลับ (การค้นหาที่อยู่))

คุณยังใช้โปรแกรมเข้ารหัสพิกัดภูมิศาสตร์เพื่อค้นหาที่อยู่ของรหัสสถานที่หนึ่งๆ ได้ด้วย

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

เริ่มต้นใช้งาน

ก่อนที่จะใช้บริการการระบุพิกัดทางภูมิศาสตร์ใน Maps JavaScript API ก่อนอื่นให้ตรวจสอบว่าได้เปิดใช้ Geocoding API ใน Google Cloud Console ในโปรเจ็กต์เดียวกันกับที่คุณตั้งค่าสำหรับ Maps JavaScript API

วิธีดูรายการ API ที่เปิดใช้

  1. ไปที่คอนโซล Google Cloud
  2. คลิกปุ่มเลือกโปรเจ็กต์ จากนั้นเลือกโปรเจ็กต์เดียวกับที่คุณตั้งค่าสำหรับ Maps JavaScript API แล้วคลิกเปิด
  3. จากรายการ API ในหน้าแดชบอร์ด ให้มองหา Geocoding API
  4. หากเห็น API ในรายการ นั่นหมายความว่าทุกอย่างเรียบร้อยแล้ว หาก API ไม่อยู่ในรายการ ให้เปิดใช้งานโดยทำดังนี้
    1. เลือกเปิดใช้ API ที่ด้านบนของหน้าเพื่อแสดงแท็บไลบรารี หรือเลือกคลังจากเมนูด้านซ้าย
    2. ค้นหา Geocoding API แล้วเลือกจากรายการผลลัพธ์
    3. เลือกเปิดใช้ เมื่อขั้นตอนนี้เสร็จสิ้นแล้ว API การระบุพิกัดทางภูมิศาสตร์จะปรากฏในรายการ API ในหน้าแดชบอร์ด

ราคาและนโยบาย

การกำหนดราคา

นับตั้งแต่วันที่ 16 กรกฎาคม 2018 แผนการตั้งราคาแบบใหม่แบบจ่ายเมื่อใช้ได้มีผลกับ Maps, Routes และ Places หากต้องการเรียนรู้เพิ่มเติมเกี่ยวกับราคาและข้อจำกัดใหม่ในการใช้งานสำหรับการใช้บริการ JavaScript Geoตามต้องการ โปรดดูที่การใช้งานและการเรียกเก็บเงินสำหรับ Geocoding API

นโยบาย

การใช้บริการการระบุพิกัดทางภูมิศาสตร์ต้องเป็นไปตามนโยบายที่อธิบายไว้สำหรับ Geocoding API

คำขอเกี่ยวกับการระบุพิกัดทางภูมิศาสตร์

การเข้าถึงบริการการระบุพิกัดทางภูมิศาสตร์เป็นแบบไม่พร้อมกัน เนื่องจาก Google Maps API ต้องเรียกไปยังเซิร์ฟเวอร์ภายนอก คุณจึงต้องผ่านเมธอด callback เพื่อดําเนินการเมื่อคําขอเสร็จสมบูรณ์ วิธีเรียกกลับนี้จะประมวลผลผลลัพธ์ โปรดทราบว่าโปรแกรมเข้ารหัสพิกัดภูมิศาสตร์อาจแสดงผลลัพธ์มากกว่า 1 รายการ

คุณเข้าถึงบริการระบุพิกัดทางภูมิศาสตร์ของ Google Maps API ภายในโค้ดผ่านออบเจ็กต์ตัวสร้าง google.maps.Geocoder เมธอด Geocoder.geocode() จะเริ่มต้นคำขอไปยังบริการเข้ารหัสพิกัดภูมิศาสตร์ โดยส่งผ่าน Object Literal ของ GeocoderRequest ที่มีคำอินพุตและวิธีการเรียกกลับเพื่อดำเนินการเมื่อได้รับการตอบสนอง

Object Literal ของ GeocoderRequest มีช่องต่อไปนี้

{
 address: string,
 location: LatLng,
 placeId: string,
 bounds: LatLngBounds,
 componentRestrictions: GeocoderComponentRestrictions,
 region: string
}

พารามิเตอร์ที่จำเป็น: คุณต้องระบุช่องต่อไปนี้ 1 รายการเท่านั้น

  • address — ที่อยู่ที่คุณต้องการเข้ารหัสพิกัดภูมิศาสตร์
         หรือ
    locationLatLng (หรือ LatLngLiteral) ที่คุณต้องการได้ที่อยู่ที่ใกล้เคียงที่สุดที่มนุษย์อ่านได้ โปรแกรมเข้ารหัสพิกัดภูมิศาสตร์ทำการเข้ารหัสพิกัดภูมิศาสตร์ย้อนกลับ ดูข้อมูลเพิ่มเติมที่การเข้ารหัสพิกัดภูมิศาสตร์แบบย้อนกลับ
         หรือ
    placeId — รหัสสถานที่ที่คุณต้องการได้ที่อยู่ที่ใกล้ที่สุดและมนุษย์อ่านได้ ดูเพิ่มเติมเกี่ยวกับการดึงข้อมูลที่อยู่สําหรับรหัสสถานที่

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

  • boundsLatLngBounds ภายในที่มีการให้น้ำหนักพิเศษกับผลลัพธ์ทางภูมิศาสตร์อย่างเด่นชัดขึ้น พารามิเตอร์ bounds จะมีผลต่อเมื่อโปรแกรมเข้ารหัสพิกัดภูมิศาสตร์ไม่เป็นการจำกัดโดยสมบูรณ์ ดูข้อมูลเพิ่มเติมเกี่ยวกับการให้น้ำหนักวิวพอร์ต ที่ด้านล่าง
  • componentRestrictions — ใช้เพื่อจำกัดผลการค้นหาให้แสดงเฉพาะพื้นที่ที่เจาะจง ดูข้อมูลเพิ่มเติมเกี่ยวกับการกรองคอมโพเนนต์ด้านล่าง
  • region — รหัสภูมิภาคที่ระบุเป็นแท็กย่อยภูมิภาค Unicode แบบ 2 อักขระ (ไม่ใช่ตัวเลข) ในกรณีส่วนใหญ่ แท็กเหล่านี้แมปกับค่า 2 อักขระของ ccTLD ที่คุ้นเคยโดยตรง พารามิเตอร์ region จะมีผลต่อผลลัพธ์ของโปรแกรมเข้ารหัสพิกัดภูมิศาสตร์เท่านั้น ไม่ใช่การจำกัดโดยสมบูรณ์ ดูข้อมูลเพิ่มเติมเกี่ยวกับการให้น้ำหนักรหัสภูมิภาคด้านล่าง

การตอบสนองที่ระบุพิกัดทางภูมิศาสตร์

บริการเข้ารหัสพิกัดภูมิศาสตร์ต้องใช้วิธีเรียกกลับเพื่อทำงานเมื่อดึงข้อมูลผลลัพธ์ของโปรแกรมเข้ารหัสพิกัดภูมิศาสตร์ โค้ดเรียกกลับนี้ควรส่งพารามิเตอร์ 2 รายการเพื่อเก็บโค้ด results และ status ตามลำดับ

ผลการระบุพิกัดทางภูมิศาสตร์

ออบเจ็กต์ GeocoderResult จะแสดงผลการระบุพิกัดทางภูมิศาสตร์รายการเดียว คำขอรหัสพิกัดภูมิศาสตร์อาจส่งคืนวัตถุผลลัพธ์หลายรายการ:

results[]: {
 types[]: string,
 formatted_address: string,
 address_components[]: {
   short_name: string,
   long_name: string,
   postcode_localities[]: string,
   types[]: string
 },
 partial_match: boolean,
 place_id: string,
 postcode_localities[]: string,
 geometry: {
   location: LatLng,
   location_type: GeocoderLocationType
   viewport: LatLngBounds,
   bounds: LatLngBounds
 }
}

ฟิลด์เหล่านี้มีคำอธิบายอยู่ด้านล่าง:

  • types[] คืออาร์เรย์ที่ระบุประเภทที่อยู่ของผลลัพธ์ที่ปรากฏ อาร์เรย์นี้มีชุดแท็กอย่างน้อย 0 รายการที่ระบุประเภทของฟีเจอร์ที่แสดงในผลลัพธ์ ตัวอย่างเช่น พิกัดทางภูมิศาสตร์ของ "ชิคาโก" จะแสดงผล "ย่าน" ซึ่งระบุว่า "ชิคาโก" เป็นเมือง และแสดงผล "การเมือง" ซึ่งระบุว่าเป็นหน่วยงานทางการเมือง ดูข้อมูลเพิ่มเติมเกี่ยวกับประเภทที่อยู่และประเภทคอมโพเนนต์ที่อยู่ได้ที่ด้านล่าง
  • formatted_address เป็นสตริงที่มีที่อยู่ของสถานที่นี้ซึ่งมนุษย์อ่านได้

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

    ที่อยู่ที่จัดรูปแบบแล้วประกอบด้วยคอมโพเนนต์ที่อยู่อย่างน้อย 1 รายการอย่างมีตรรกะ ตัวอย่างเช่น ที่อยู่ "111 8th Avenue, New York, NY" ประกอบด้วยองค์ประกอบต่อไปนี้ "111" (เลขที่ถนน) "8th Avenue" (เส้นทาง) "New York" (เมือง) และ "NY" (รัฐในสหรัฐอเมริกา)

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

  • address_components[] คืออาร์เรย์ที่มีคอมโพเนนต์แยกต่างหากที่ใช้กับอีเมลนี้

    องค์ประกอบที่อยู่แต่ละรายการมักมีช่องต่อไปนี้

    • types[] คืออาร์เรย์ที่ระบุประเภทของคอมโพเนนต์ที่อยู่ ดูรายการประเภทที่รองรับ
    • long_name เป็นคำอธิบายข้อความแบบเต็มหรือชื่อของคอมโพเนนต์ที่อยู่ที่ Geocoder แสดงผล
    • short_name คือชื่อข้อความแบบย่อสำหรับคอมโพเนนต์ที่อยู่ หากมี เช่น คอมโพเนนต์ที่อยู่สําหรับรัฐอะแลสกาอาจมี long_name เป็น "อะแลสกา" และ short_name เป็น "AK" โดยใช้ตัวย่อไปรษณีย์ 2 ตัวอักษร

    โปรดทราบข้อเท็จจริงต่อไปนี้เกี่ยวกับอาร์เรย์ address_components[]

    • อาร์เรย์ของคอมโพเนนต์ที่อยู่อาจมีคอมโพเนนต์มากกว่า formatted_address
    • อาร์เรย์ไม่จำเป็นต้องรวมบุคคลทางการเมืองทั้งหมดที่มีที่อยู่ นอกเหนือจากที่อยู่ใน formatted_address หากต้องการดึงข้อมูลหน่วยงานทางการเมืองทั้งหมดที่มีที่อยู่หนึ่งๆ คุณควรใช้การระบุพิกัดทางภูมิศาสตร์แบบย้อนกลับโดยการส่งละติจูด/ลองจิจูดของที่อยู่เป็นพารามิเตอร์ไปยังคำขอ
    • ทั้งนี้ เราไม่รับประกันว่ารูปแบบการตอบกลับคำขอแต่ละรายการจะยังคงเหมือนเดิม โดยเฉพาะอย่างยิ่ง จำนวนของ address_components จะแตกต่างกันไปตามที่อยู่ที่ขอ และอาจมีการเปลี่ยนแปลงสำหรับที่อยู่เดียวกันเมื่อเวลาผ่านไป คอมโพเนนต์จะเปลี่ยนตำแหน่งในอาร์เรย์ได้ ประเภทของคอมโพเนนต์สามารถเปลี่ยนแปลงได้ คอมโพเนนต์ที่เฉพาะเจาะจงอาจขาดหายไปในการตอบกลับในภายหลัง

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

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

    การจับคู่บางส่วนส่วนใหญ่มักเกิดขึ้นสำหรับที่อยู่ที่ไม่มีอยู่ในย่านที่คุณส่งในคำขอ ระบบอาจแสดงผลการจับคู่บางส่วนเมื่อคำขอตรงกับสถานที่ตั้งแต่ 2 แห่งขึ้นไปในย่านเดียวกัน ตัวอย่างเช่น "Hillpar St, Bristol, UK" จะแสดงผลการจับคู่บางส่วนสำหรับทั้ง Henry Street และ Henrietta Street โปรดทราบว่าหากคำขอมีคอมโพเนนต์ที่อยู่ที่สะกดผิด บริการระบุพิกัดทางภูมิศาสตร์อาจแนะนำที่อยู่อื่น คำแนะนำที่ทำงานในลักษณะนี้จะมีการทำเครื่องหมายเป็นรายการที่ตรงกันบางส่วนด้วย

  • place_idเป็นตัวระบุที่ไม่ซ้ำของสถานที่ ซึ่งใช้กับ Google API อื่นๆ ได้ ตัวอย่างเช่น คุณอาจใช้ place_id กับไลบรารี Google Places API เพื่อรับรายละเอียดของธุรกิจในพื้นที่ เช่น หมายเลขโทรศัพท์ เวลาทำการ รีวิวจากผู้ใช้ และอื่นๆ ดูภาพรวมรหัสสถานที่
  • postcode_localities[] คืออาร์เรย์ที่แสดงถึงย่านทั้งหมดที่อยู่ในรหัสไปรษณีย์ และจะปรากฏเมื่อผลลัพธ์เป็นรหัสไปรษณีย์ที่มีย่านหลายแห่ง
  • geometry ประกอบไปด้วยข้อมูลต่อไปนี้

    • location มีค่าละติจูดและลองจิจูดที่ระบุพิกัดทางภูมิศาสตร์ โปรดทราบว่าเราแสดงผลตำแหน่งนี้เป็นออบเจ็กต์ LatLng ไม่ใช่สตริงที่จัดรูปแบบ
    • location_type จะเก็บข้อมูลเพิ่มเติมเกี่ยวกับตำแหน่งที่ระบุ ปัจจุบันระบบรองรับค่าต่อไปนี้
      • ROOFTOP บ่งบอกว่าผลลัพธ์ที่แสดงแสดงพิกัดทางภูมิศาสตร์ที่แม่นยำ
      • RANGE_INTERPOLATED แสดงให้เห็นว่าผลลัพธ์ที่แสดงคือค่าประมาณ (มักจะอยู่บนถนน) ที่มีระยะห่างระหว่างจุดที่แน่นอน 2 จุด (เช่น ทางแยก) โดยทั่วไประบบจะส่งคืนผลลัพธ์แบบแทรกสลับเมื่อ พิกัดทางภูมิศาสตร์บนชั้นดาดฟ้าใช้ไม่ได้กับที่อยู่
      • GEOMETRIC_CENTER บ่งบอกว่าผลลัพธ์ที่แสดงคือศูนย์กลางทางเรขาคณิตของผลการค้นหา เช่น เส้นประกอบ (เช่น ถนน) หรือรูปหลายเหลี่ยม (ภูมิภาค)
      • APPROXIMATE บ่งบอกว่าผลลัพธ์ที่แสดงเป็นค่าประมาณ

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

Geocoder จะส่งที่อยู่กลับมาโดยใช้การตั้งค่าภาษาที่ต้องการของเบราว์เซอร์ หรือภาษาที่ระบุเมื่อโหลด JavaScript ของ API โดยใช้พารามิเตอร์ language (ดูข้อมูลเพิ่มเติมได้ใน การแปล)

ประเภทที่อยู่และประเภทคอมโพเนนต์ที่อยู่

อาร์เรย์ types[] ใน GeocoderResult จะระบุประเภทที่อยู่ อาร์เรย์ types[] อาจแสดงภายใน GeocoderAddressComponent เพื่อระบุประเภทของคอมโพเนนต์ที่อยู่ที่เฉพาะเจาะจง ที่อยู่ที่โปรแกรมเข้ารหัสพิกัดภูมิศาสตร์แสดงผลอาจมีได้หลายประเภท ซึ่งประเภทดังกล่าวอาจถือเป็นแท็ก ตัวอย่างเช่น หลายเมืองติดแท็กด้วยประเภท political และ locality

โปรแกรมเข้ารหัสพิกัดภูมิศาสตร์รองรับและแสดงผลประเภทต่อไปนี้ทั้งในประเภทที่อยู่และประเภทคอมโพเนนต์ที่อยู่

  • street_address จะระบุที่อยู่ที่แน่นอน
  • route บอกเส้นทางที่มีชื่อ (เช่น "US 101")
  • intersection หมายถึงสี่แยกหลัก ซึ่งโดยปกติจะเป็นของถนนสายหลัก 2 สาย
  • political หมายถึงองค์กรทางการเมือง โดยปกติ ประเภทนี้จะระบุรูปหลายเหลี่ยมของการบริหารจัดการพลเรือน
  • country แสดงถึงหน่วยงานทางการเมืองระดับประเทศ และโดยทั่วไปจะเป็นประเภทลำดับสูงสุดที่ Geocoder แสดงผล
  • administrative_area_level_1 หมายถึงนิติบุคคลพลเรือนอันดับ 1 ที่อยู่ต่ำกว่าระดับประเทศ ในสหรัฐอเมริกา ระดับการบริหารเหล่านี้หมายถึงรัฐ บางประเทศอาจไม่ได้แสดงระดับการบริหารจัดการเหล่านี้ ในกรณีส่วนใหญ่ ชื่อย่อ admin_area_level_1 จะใกล้เคียงกับส่วนย่อยของ ISO 3166-2 และรายการอื่นๆ ที่มีการเผยแพร่อย่างแพร่หลาย อย่างไรก็ตาม ไม่มีการรับประกันว่าผลการระบุพิกัดทางภูมิศาสตร์ของเราจะอิงตามสัญญาณและข้อมูลตำแหน่งที่หลากหลาย
  • administrative_area_level_2 บ่งชี้ถึงกิจการพลเรือนอันดับ 2 ที่ต่ำกว่าระดับประเทศ ในสหรัฐอเมริกา ระดับเขตการปกครองเหล่านี้เป็นประเทศ บางประเทศอาจไม่ได้แสดงระดับการบริหารจัดการเหล่านี้
  • administrative_area_level_3 บ่งชี้ถึงวิถีชีวิตของพลเรือนที่ 3 ต่ำกว่าระดับประเทศ ประเภทนี้บ่งชี้การปกครองส่วนผู้เยาว์ บางประเทศอาจไม่ได้แสดงระดับการบริหารจัดการเหล่านี้
  • administrative_area_level_4 บ่งชี้ถึงกิจการพลเมืองอันดับ 4 ที่ต่ำกว่าระดับประเทศ ประเภทนี้บ่งชี้การปกครองส่วนผู้เยาว์ บางประเทศอาจไม่ได้แสดงระดับการบริหารจัดการเหล่านี้
  • administrative_area_level_5 หมายถึงนิติบุคคลพลเรือนอันดับที่ 5 ที่อยู่ต่ำกว่าระดับประเทศ ประเภทนี้บ่งชี้การปกครองส่วนผู้เยาว์ บางประเทศอาจไม่ได้แสดงระดับการบริหารจัดการเหล่านี้
  • administrative_area_level_6 หมายถึงนิติบุคคลพลเรือนอันดับ 6 ที่อยู่ต่ำกว่าระดับประเทศ ประเภทนี้บ่งชี้การปกครองส่วนผู้เยาว์ บางประเทศอาจไม่ได้แสดงระดับการบริหารจัดการเหล่านี้
  • administrative_area_level_7 หมายถึงนิติบุคคลพลเรือนอันดับที่ 7 ที่อยู่ต่ำกว่าระดับประเทศ ประเภทนี้บ่งชี้การปกครองส่วนผู้เยาว์ บางประเทศอาจไม่ได้แสดงระดับการบริหารจัดการเหล่านี้
  • colloquial_area บ่งชี้ถึงชื่ออื่นที่ใช้กันโดยทั่วไปสำหรับเอนทิตี
  • locality หมายถึงองค์กรทางการเมืองแบบเมืองหรือเมืองที่จัดตั้งขึ้น
  • sublocality บ่งชี้ถึงนิติบุคคลที่เป็นพลเมืองลำดับที่ 1 ซึ่งอยู่ต่ำกว่าย่าน สําหรับสถานที่ตั้งบางแห่ง อาจได้รับประเภทเพิ่มเติมอย่างใดอย่างหนึ่งต่อไปนี้ sublocality_level_1 ถึง sublocality_level_5 ระดับท้องถิ่นย่อยแต่ละระดับเป็นนิติบุคคลของพลเมือง ตัวเลขที่มากกว่าหมายถึงพื้นที่ทางภูมิศาสตร์ที่เล็กลง
  • neighborhood หมายถึงย่านใกล้เคียงที่มีชื่อ
  • premise ระบุตำแหน่งที่มีชื่อ โดยปกติจะเป็นอาคารหรือคอลเล็กชันของอาคารที่มีชื่อทั่วไป
  • subpremise ระบุเอนทิตีลำดับแรกใต้สถานที่ที่ตั้งชื่อแล้ว โดยทั่วไปจะเป็นอาคารเดี่ยวภายในกลุ่มอาคารที่มีชื่อทั่วไป
  • plus_code บ่งชี้การอ้างอิงตำแหน่งที่เข้ารหัสซึ่งมาจากละติจูดและลองจิจูด โค้ด Plus ใช้แทนที่อยู่ในสถานที่ที่ไม่มีอยู่จริงได้ (ที่ไม่มีหมายเลขอาคารหรือไม่มีการตั้งชื่อถนน) ดูรายละเอียดได้ที่ https://plus.codes
  • postal_code หมายถึงรหัสไปรษณีย์ที่ใช้ระบุที่อยู่ทางไปรษณีย์ภายในประเทศ
  • natural_feature หมายถึงลักษณะเด่นตามธรรมชาติ
  • airport หมายถึงสนามบิน
  • park หมายถึงสวนสาธารณะที่มีชื่อ
  • point_of_interest หมายถึงจุดสนใจที่มีชื่อ โดยปกติแล้ว "จุดที่น่าสนใจ" เหล่านี้เป็นหน่วยงานท้องถิ่นที่โดดเด่นและไม่เหมาะกับหมวดหมู่อื่น เช่น "อาคารเอ็มไพร์สเตท" หรือ "หอไอเฟล"

รายการประเภทที่ว่างเปล่าจะระบุว่าไม่มีประเภทที่รู้จักสำหรับคอมโพเนนต์ที่อยู่หนึ่งๆ เช่น Lieu-dit ในฝรั่งเศส

นอกเหนือจากที่กล่าวมาข้างต้น คอมโพเนนต์ที่อยู่อาจมีประเภทด้านล่างด้วย

หมายเหตุ: รายการนี้ไม่ได้แสดงข้อมูลครบถ้วนและอาจมีการเปลี่ยนแปลง

  • floor หมายถึงชั้นของที่อยู่อาคาร
  • โดยปกติแล้ว establishment จะหมายถึงสถานที่ที่ยังไม่ได้จัดหมวดหมู่
  • landmark บ่งชี้สถานที่ใกล้เคียงที่ใช้เป็นข้อมูลอ้างอิงในการช่วยนำทาง
  • point_of_interest หมายถึงจุดสนใจที่มีชื่อ
  • parking หมายถึงที่จอดรถหรือโครงสร้างที่จอดรถ
  • post_box หมายถึงตู้ไปรษณีย์เฉพาะ
  • postal_town บ่งชี้ถึงการจัดกลุ่มพื้นที่ทางภูมิศาสตร์ เช่น locality และ sublocality ใช้สำหรับที่อยู่ทางไปรษณีย์ในบางประเทศ
  • room หมายถึงห้องของที่อยู่อาคาร
  • street_number บอกหมายเลขถนนที่ถูกต้อง
  • bus_station, train_station และ transit_station ระบุตำแหน่งของป้ายรถประจำทาง รถไฟ หรือการขนส่งสาธารณะ

รหัสสถานะ

โค้ด status อาจแสดงค่าใดค่าหนึ่งต่อไปนี้

  • "OK" แสดงให้เห็นว่าไม่มีข้อผิดพลาดเกิดขึ้น ที่อยู่ได้รับการแยกวิเคราะห์สำเร็จและส่งกลับพิกัดทางภูมิศาสตร์อย่างน้อย 1 รายการ
  • "ZERO_RESULTS" บ่งชี้ว่ารหัสพิกัดภูมิศาสตร์สำเร็จ แต่ไม่พบผลลัพธ์ ปัญหานี้อาจเกิดขึ้นหากโปรแกรมเข้ารหัสพิกัดภูมิศาสตร์ส่งผ่าน address ที่ไม่มีอยู่จริง
  • "OVER_QUERY_LIMIT" หมายความว่าคุณใช้พื้นที่เกินโควต้า
  • "REQUEST_DENIED" บ่งบอกว่าคำขอถูกปฏิเสธ หน้าเว็บไม่ได้รับอนุญาตให้ใช้โปรแกรมเข้ารหัสพิกัดภูมิศาสตร์
  • ปกติแล้ว "INVALID_REQUEST" บ่งบอกว่าคำค้นหา (address, components หรือ latlng) ขาดหายไป
  • "UNKNOWN_ERROR" บ่งบอกว่าดำเนินการตามคำขอไม่ได้เนื่องจากข้อผิดพลาดเกี่ยวกับเซิร์ฟเวอร์ คำขออาจสำเร็จหากคุณลองอีกครั้ง
  • "ERROR" บ่งบอกว่าคำขอหมดเวลาหรือมีปัญหาในการติดต่อกับเซิร์ฟเวอร์ของ Google คำขออาจสำเร็จหากคุณลองอีกครั้ง

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

  var geocoder;
  var map;
  function initialize() {
    geocoder = new google.maps.Geocoder();
    var latlng = new google.maps.LatLng(-34.397, 150.644);
    var mapOptions = {
      zoom: 8,
      center: latlng
    }
    map = new google.maps.Map(document.getElementById('map'), mapOptions);
  }

  function codeAddress() {
    var address = document.getElementById('address').value;
    geocoder.geocode( { 'address': address}, function(results, status) {
      if (status == 'OK') {
        map.setCenter(results[0].geometry.location);
        var marker = new google.maps.Marker({
            map: map,
            position: results[0].geometry.location
        });
      } else {
        alert('Geocode was not successful for the following reason: ' + status);
      }
    });
  }

<body onload="initialize()">
 <div id="map" style="width: 320px; height: 480px;"></div>
  <div>
    <input id="address" type="textbox" value="Sydney, NSW">
    <input type="button" value="Encode" onclick="codeAddress()">
  </div>
</body>

ดูตัวอย่าง

การให้น้ำหนักวิวพอร์ต

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

ตัวอย่างเช่น โดยทั่วไป พิกัดทางภูมิศาสตร์ของ "Winnetka" จะแสดงผลเป็นชานเมืองของชิคาโก:

{
  "types":["locality","political"],
  "formatted_address":"Winnetka, IL, USA",
  "address_components":[{
    "long_name":"Winnetka",
    "short_name":"Winnetka",
    "types":["locality","political"]
  },{
    "long_name":"Illinois",
    "short_name":"IL",
    "types":["administrative_area_level_1","political"]
  },{
    "long_name":"United States",
    "short_name":"US",
    "types":["country","political"]
  }],
  "geometry":{
    "location":[ -87.7417070, 42.1083080],
    "location_type":"APPROXIMATE"
  },
  "place_id": "ChIJW8Va5TnED4gRY91Ng47qy3Q"
}

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

{
  "types":["sublocality","political"],
  "formatted_address":"Winnetka, California, USA",
  "address_components":[{
    "long_name":"Winnetka",
    "short_name":"Winnetka",
    "types":["sublocality","political"]
  },{
    "long_name":"Los Angeles",
    "short_name":"Los Angeles",
    "types":["administrative_area_level_3","political"]
  },{
    "long_name":"Los Angeles",
    "short_name":"Los Angeles",
    "types":["administrative_area_level_2","political"]
  },{
    "long_name":"California",
    "short_name":"CA",
    "types":["administrative_area_level_1","political"]
  },{
    "long_name":"United States",
    "short_name":"US",
    "types":["country","political"]
  }],
  "geometry":{
    "location": [34.213171,-118.571022],
    "location_type":"APPROXIMATE"
  },
  "place_id": "ChIJ0fd4S_KbwoAR2hRDrsr3HmQ"
}

การให้น้ำหนักรหัสภูมิภาค

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

เมื่อใช้พารามิเตอร์ region:

  • ระบุเพียงประเทศหรือภูมิภาคเดียว ระบบจะไม่สนใจค่าหลายค่า และอาจส่งผลให้คำขอล้มเหลว
  • ใช้แท็กย่อยภูมิภาคแบบ 2 อักขระเท่านั้น (รูปแบบ Unicode CLDR) ส่วนอินพุตอื่นๆ ทั้งหมดจะทำให้เกิดข้อผิดพลาด
  • รองรับเฉพาะประเทศและภูมิภาคที่แสดงอยู่ในรายละเอียดการครอบคลุมของ Google Maps Platform เท่านั้น

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

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

{
  "types":["locality","political"],
  "formatted_address":"Toledo, OH, USA",
  "address_components":[{
    "long_name":"Toledo",
    "short_name":"Toledo",
    "types":["locality","political"]
  },{
    "long_name":"Ohio",
    "short_name":"OH",
    "types":["administrative_area_level_1","political"]
  },{
    "long_name":"United States",
    "short_name":"US",
    "types":["country","political"]
  }],
  "place_id": "ChIJeU4e_C2HO4gRRcM6RZ_IPHw"
}

พิกัดทางภูมิศาสตร์ของ "โตเลโด" ที่ตั้งค่าช่อง region เป็น 'es' (สเปน) จะแสดงผลเมืองของสเปนดังนี้

{
  "types":["locality","political"],
  "formatted_address":"Toledo, España",
  "address_components":[{
    "long_name":"Toledo",
    "short_name":"Toledo",
    "types":["locality","political"]
  },{
    "long_name":"Toledo",
    "short_name":"TO",
    "types":["administrative_area_level_2","political"]
  },{
    "long_name":"Castilla-La Mancha",
    "short_name":"CM",
    "types":["administrative_area_level_1","political"]
  },{
    "long_name":"España",
    "short_name":"ES",
    "types":["country","political"]
  }],
  "place_id": "ChIJ8f21C60Lag0R_q11auhbf8Y"
}

การกรองคอมโพเนนต์

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

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

ตัวกรองคอมโพเนนต์ประกอบด้วยรายการต่อไปนี้อย่างน้อย 1 รายการ

  • route ตรงกับชื่อเส้นทางยาวหรือสั้น
  • locality จับคู่กับประเภทย่านและย่านย่อย
  • administrativeArea ตรงกับระดับเขตบริหารทุกระดับ
  • postalCode ตรงกับรหัสไปรษณีย์และรหัสนำหน้ารหัสไปรษณีย์
  • country ตรงกับชื่อประเทศหรือรหัสประเทศ 2 ตัวอักษร ISO 3166-1 หมายเหตุ: API เป็นไปตามมาตรฐาน ISO สำหรับการกำหนดประเทศ และการกรองจะทำงานได้ดีที่สุดเมื่อใช้รหัส ISO ที่เกี่ยวข้องของประเทศ

ตัวอย่างต่อไปนี้สาธิตการใช้พารามิเตอร์ componentRestrictions เพื่อกรองตาม country และ postalCode

function codeAddress() {
geocoder.geocode({
  componentRestrictions: {
    country: 'AU',
    postalCode: '2000'
  }
}, function(results, status) {
  if (status == 'OK') {
    map.setCenter(results[0].geometry.location);
    var marker = new google.maps.Marker({
      map: map,
      position: results[0].geometry.location
    });
  } else {
    window.alert('Geocode was not successful for the following reason: ' + status);
  }
});
}

การระบุพิกัดทางภูมิศาสตร์แบบย้อนกลับ (การค้นหาที่อยู่)

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

ป้อนคู่ละติจูด/ลองจิจูดที่คั่นด้วยคอมมาในพารามิเตอร์ location แทนการระบุ address แบบข้อความ

ตัวอย่างต่อไปนี้ระบุพิกัดทางภูมิศาสตร์ให้ค่าละติจูด/ลองจิจูดและทำให้แผนที่มีศูนย์กลางอยู่ที่ตำแหน่งนั้น โดยแสดงหน้าต่างข้อมูลซึ่งมีที่อยู่ที่ได้รับการจัดรูปแบบขึ้นมา:

TypeScript

function initMap(): void {
  const map = new google.maps.Map(
    document.getElementById("map") as HTMLElement,
    {
      zoom: 8,
      center: { lat: 40.731, lng: -73.997 },
    }
  );
  const geocoder = new google.maps.Geocoder();
  const infowindow = new google.maps.InfoWindow();

  (document.getElementById("submit") as HTMLElement).addEventListener(
    "click",
    () => {
      geocodeLatLng(geocoder, map, infowindow);
    }
  );
}

function geocodeLatLng(
  geocoder: google.maps.Geocoder,
  map: google.maps.Map,
  infowindow: google.maps.InfoWindow
) {
  const input = (document.getElementById("latlng") as HTMLInputElement).value;
  const latlngStr = input.split(",", 2);
  const latlng = {
    lat: parseFloat(latlngStr[0]),
    lng: parseFloat(latlngStr[1]),
  };

  geocoder
    .geocode({ location: latlng })
    .then((response) => {
      if (response.results[0]) {
        map.setZoom(11);

        const marker = new google.maps.Marker({
          position: latlng,
          map: map,
        });

        infowindow.setContent(response.results[0].formatted_address);
        infowindow.open(map, marker);
      } else {
        window.alert("No results found");
      }
    })
    .catch((e) => window.alert("Geocoder failed due to: " + e));
}

declare global {
  interface Window {
    initMap: () => void;
  }
}
window.initMap = initMap;

JavaScript

function initMap() {
  const map = new google.maps.Map(document.getElementById("map"), {
    zoom: 8,
    center: { lat: 40.731, lng: -73.997 },
  });
  const geocoder = new google.maps.Geocoder();
  const infowindow = new google.maps.InfoWindow();

  document.getElementById("submit").addEventListener("click", () => {
    geocodeLatLng(geocoder, map, infowindow);
  });
}

function geocodeLatLng(geocoder, map, infowindow) {
  const input = document.getElementById("latlng").value;
  const latlngStr = input.split(",", 2);
  const latlng = {
    lat: parseFloat(latlngStr[0]),
    lng: parseFloat(latlngStr[1]),
  };

  geocoder
    .geocode({ location: latlng })
    .then((response) => {
      if (response.results[0]) {
        map.setZoom(11);

        const marker = new google.maps.Marker({
          position: latlng,
          map: map,
        });

        infowindow.setContent(response.results[0].formatted_address);
        infowindow.open(map, marker);
      } else {
        window.alert("No results found");
      }
    })
    .catch((e) => window.alert("Geocoder failed due to: " + e));
}

window.initMap = initMap;
ดูตัวอย่าง

ลองใช้ตัวอย่าง

โปรดทราบว่าในตัวอย่างก่อนหน้านี้ เราแสดงผลการค้นหาแรกด้วยการเลือก results[0] โปรแกรมเข้ารหัสพิกัดย้อนกลับมักจะแสดงผลลัพธ์มากกว่า 1 รายการ ที่อยู่ที่ระบุพิกัดทางภูมิศาสตร์ ไม่ใช่แค่ที่อยู่ไปรษณีย์ แต่เป็นวิธีกำหนดชื่อทางภูมิศาสตร์สำหรับสถานที่ตั้งหนึ่งๆ ตัวอย่างเช่น เมื่อระบุพิกัดทางภูมิศาสตร์ของจุดหนึ่งในเมืองชิคาโก จุดที่ระบุพิกัดทางภูมิศาสตร์จุดดังกล่าวอาจมีป้ายกำกับเป็นที่อยู่ เช่น เมือง (ชิคาโก) เป็นรัฐ (อิลลินอยส์) หรือประเทศ (สหรัฐอเมริกา) ทั้งหมดเป็นที่อยู่ของโปรแกรมเข้ารหัสพิกัดภูมิศาสตร์ โปรแกรมเข้ารหัสพิกัดย้อนกลับจะแสดงผลลัพธ์ทั้งหมด

โปรแกรมเข้ารหัสย้อนกลับจะจับคู่เอนทิตีทางการเมือง (ประเทศ จังหวัด เมือง และย่าน) ที่อยู่ และรหัสไปรษณีย์

ต่อไปนี้คือตัวอย่างของรายการที่อยู่ที่ข้อความค้นหาข้างต้นอาจแสดงผล

results[0].formatted_address: "277 Bedford Ave, Brooklyn, NY 11211, USA"
results[1].formatted_address: "Grand St/Bedford Av, Brooklyn, NY 11211, USA"
results[2].formatted_address: "Williamsburg, Brooklyn, NY, USA"
results[3].formatted_address: "Brooklyn, NY, USA"
results[4].formatted_address: "New York, NY, USA"
results[5].formatted_address: "Brooklyn, NY 11211, USA"
results[6].formatted_address: "Kings County, NY, USA"
results[7].formatted_address: "New York-Northern New Jersey-Long Island, NY-NJ-PA, USA"
results[8].formatted_address: "New York Metropolitan Area, USA"
results[9].formatted_address: "New York, USA"

ระบบจะแสดงผลที่อยู่ตามลำดับของรายการที่ตรงกันมากที่สุดไปน้อยที่สุด โดยทั่วไปแล้ว ที่อยู่ที่ตรงทั้งหมดหมายถึงผลลัพธ์ที่โดดเด่นที่สุดดังที่เห็นในตัวอย่างนี้ โปรดทราบว่าเราแสดงผลที่อยู่ประเภทต่างๆ ตั้งแต่ที่อยู่ที่เจาะจงที่สุดไปจนถึงหน่วยงานทางการเมืองที่เฉพาะเจาะจงน้อยกว่า เช่น ย่านใกล้เคียง เมือง เคาน์ตี รัฐ ฯลฯ หากต้องการจับคู่ที่อยู่ทั่วไปมากกว่านี้ คุณอาจต้องตรวจสอบช่อง results[].types

หมายเหตุ: การระบุพิกัดทางภูมิศาสตร์แบบย้อนกลับไม่ใช่วิทยาศาสตร์ที่ตรงทั้งหมด โปรแกรมเข้ารหัสพิกัดภูมิศาสตร์จะพยายามหาตำแหน่งที่อยู่ใกล้ที่สุดซึ่งอิงจากค่าที่ยอมรับได้

การดึงข้อมูลที่อยู่ของรหัสสถานที่

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

เมื่อคุณระบุ placeId คำขอจะมีช่องใดช่องหนึ่งต่อไปนี้ไม่ได้

  • address
  • latLng
  • location
  • componentRestrictions

ตัวอย่างต่อไปนี้ยอมรับรหัสสถานที่ ค้นหาที่อยู่ที่เกี่ยวข้อง และทำให้มีแผนที่อยู่กึ่งกลางที่ตำแหน่งนั้น นอกจากนี้ หน้าต่างข้อมูลจะปรากฏขึ้นเพื่อแสดงที่อยู่ที่จัดรูปแบบของสถานที่ที่เกี่ยวข้อง ดังนี้

TypeScript

// Initialize the map.
function initMap(): void {
  const map = new google.maps.Map(
    document.getElementById("map") as HTMLElement,
    {
      zoom: 8,
      center: { lat: 40.72, lng: -73.96 },
    }
  );
  const geocoder = new google.maps.Geocoder();
  const infowindow = new google.maps.InfoWindow();

  (document.getElementById("submit") as HTMLElement).addEventListener(
    "click",
    () => {
      geocodePlaceId(geocoder, map, infowindow);
    }
  );
}

// This function is called when the user clicks the UI button requesting
// a geocode of a place ID.
function geocodePlaceId(
  geocoder: google.maps.Geocoder,
  map: google.maps.Map,
  infowindow: google.maps.InfoWindow
) {
  const placeId = (document.getElementById("place-id") as HTMLInputElement)
    .value;

  geocoder
    .geocode({ placeId: placeId })
    .then(({ results }) => {
      if (results[0]) {
        map.setZoom(11);
        map.setCenter(results[0].geometry.location);

        const marker = new google.maps.Marker({
          map,
          position: results[0].geometry.location,
        });

        infowindow.setContent(results[0].formatted_address);
        infowindow.open(map, marker);
      } else {
        window.alert("No results found");
      }
    })
    .catch((e) => window.alert("Geocoder failed due to: " + e));
}

declare global {
  interface Window {
    initMap: () => void;
  }
}
window.initMap = initMap;

JavaScript

// Initialize the map.
function initMap() {
  const map = new google.maps.Map(document.getElementById("map"), {
    zoom: 8,
    center: { lat: 40.72, lng: -73.96 },
  });
  const geocoder = new google.maps.Geocoder();
  const infowindow = new google.maps.InfoWindow();

  document.getElementById("submit").addEventListener("click", () => {
    geocodePlaceId(geocoder, map, infowindow);
  });
}

// This function is called when the user clicks the UI button requesting
// a geocode of a place ID.
function geocodePlaceId(geocoder, map, infowindow) {
  const placeId = document.getElementById("place-id").value;

  geocoder
    .geocode({ placeId: placeId })
    .then(({ results }) => {
      if (results[0]) {
        map.setZoom(11);
        map.setCenter(results[0].geometry.location);

        const marker = new google.maps.Marker({
          map,
          position: results[0].geometry.location,
        });

        infowindow.setContent(results[0].formatted_address);
        infowindow.open(map, marker);
      } else {
        window.alert("No results found");
      }
    })
    .catch((e) => window.alert("Geocoder failed due to: " + e));
}

window.initMap = initMap;
ดูตัวอย่าง

ลองใช้ตัวอย่าง