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

หมายเหตุ: ไลบรารีฝั่งเซิร์ฟเวอร์
นักพัฒนาซอฟต์แวร์ในเขตเศรษฐกิจยุโรป (EEA)

ภาพรวม

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

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

นอกจากนี้ คุณยังใช้ Geocoder เพื่อค้นหาที่อยู่สำหรับรหัสสถานที่ที่ระบุได้ด้วย

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

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

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

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

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

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

ราคา

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

นโยบาย

การใช้บริการ Geocoding ต้องเป็นไปตามนโยบายสำหรับ Geocoding API

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

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

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

ออบเจ็กต์ลิเทอรัล GeocoderRequest มีช่องต่อไปนี้

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

พารามิเตอร์ที่ต้องระบุ: คุณต้องระบุฟิลด์ต่อไปนี้ 1 ฟิลด์เท่านั้น

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

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

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

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

บริการเข้ารหัสพิกัดภูมิศาสตร์ต้องใช้เมธอดเรียกกลับเพื่อดำเนินการเมื่อเรียกข้อมูล ผลลัพธ์ของ Geocoder โดย Callback นี้ควรส่งพารามิเตอร์ 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 รายการขึ้นไป ซึ่งระบุประเภทของฟีเจอร์ที่แสดงในผลลัพธ์ ตัวอย่างเช่น รหัสพิกัดภูมิศาสตร์ของ "ชิคาโก" จะแสดงผล "locality" ซึ่งบ่งชี้ว่า "ชิคาโก" เป็นเมือง และยังแสดงผล "political" ซึ่งบ่งชี้ว่าเป็นหน่วยงานทางการเมือง ดูข้อมูลเพิ่มเติมเกี่ยวกับ ประเภทที่อยู่และประเภทคอมโพเนนต์ของที่อยู่ด้านล่าง
  • 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 เป็น "Alaska" และ short_name เป็น "AK" โดยใช้ตัวย่อทางไปรษณีย์ 2 ตัวอักษร

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

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

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

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

    การจับคู่บางส่วนมักเกิดขึ้นกับที่อยู่บนถนนที่ไม่มีอยู่ ในย่านที่คุณส่งในคำขอ ระบบอาจแสดงการจับคู่บางส่วนเมื่อคำขอตรงกับสถานที่ตั้ง 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 ที่ต่ำกว่าระดับประเทศ ในสหรัฐอเมริกา ระดับการบริหารเหล่านี้คือรัฐ บางประเทศไม่ได้ใช้การบริหารระดับเหล่านี้ ในกรณีส่วนใหญ่ administrative_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 Codes แทนที่อยู่ได้ในสถานที่ที่ไม่มีที่อยู่ (ไม่มีหมายเลขอ้างอิงอาคารหรือไม่มีชื่อถนน) ดูรายละเอียดได้ที่ https://plus.codes
postal_code รหัสไปรษณีย์ที่ใช้ในการส่งจดหมายภายในประเทศ
natural_feature องค์ประกอบทางธรรมชาติที่โดดเด่น
airport สนามบิน
park สวนสาธารณะที่มีชื่อ
point_of_interest จุดที่น่าสนใจที่มีชื่อ โดยปกติแล้ว "POI" เหล่านี้จะเป็นหน่วยงานท้องถิ่นที่มีชื่อเสียงซึ่งไม่สามารถจัดอยู่ในหมวดหมู่อื่นๆ ได้ง่าย เช่น "ตึกเอ็มไพร์สเตต" หรือ "หอไอเฟล"

รายการประเภทที่ว่างเปล่าแสดงว่าไม่มีประเภทที่รู้จักสำหรับคอมโพเนนต์ที่อยู่เฉพาะเจาะจง (เช่น 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 ที่ไม่มีอยู่จริงไปยัง Geocoder
  • "OVER_QUERY_LIMIT" แสดงว่าคุณใช้พื้นที่เก็บข้อมูลเกินโควต้า
  • "REQUEST_DENIED" แสดงว่าคำขอของคุณถูกปฏิเสธ หน้าเว็บไม่ได้รับอนุญาตให้ใช้ Geocoder
  • "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 ตามตัวอักษรเพื่อกำหนดขอบเขตของวิวพอร์ตนี้ โปรดทราบว่าการเอนเอียงจะเลือกเฉพาะผลลัพธ์ที่อยู่ภายในขอบเขตเท่านั้น หากมีผลลัพธ์ที่เกี่ยวข้องมากกว่าอยู่นอกขอบเขตเหล่านี้ ระบบอาจรวมผลลัพธ์เหล่านั้นไว้ด้วย

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

{
  "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 ที่กำหนดกรอบล้อมรอบ สำหรับหุบเขาซานเฟอร์นันโดในลอสแองเจลิสจะทำให้รหัสพิกัดภูมิศาสตร์นี้แสดงผล ย่านที่ชื่อ "วินเนตกา" ในสถานที่ดังกล่าว

{
  "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 ("โดเมนระดับบนสุด") ที่คุ้นเคย แบบ 2 อักขระโดยตรง เช่น "uk" ใน "co.uk" ในบางกรณี แท็ก region ยังรองรับรหัส ISO-3166-1 ซึ่งบางครั้ง อาจแตกต่างจากค่า ccTLD ("GB" สำหรับ "Great Britain" เป็นต้น)

เมื่อใช้พารามิเตอร์ region ให้ทำดังนี้

  • ระบุประเทศหรือภูมิภาคเพียงรายการเดียว ระบบจะไม่สนใจค่าหลายค่า และอาจส่งผลให้คำขอไม่สำเร็จ
  • ใช้เฉพาะแท็กย่อยของภูมิภาค 2 อักขระ (รูปแบบ CLDR ของ Unicode) อินพุตอื่นๆ ทั้งหมดจะทำให้เกิดข้อผิดพลาด
  • รองรับเฉพาะประเทศและภูมิภาคที่ระบุไว้ในรายละเอียดความครอบคลุมของ 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"
}

รหัสพิกัดภูมิศาสตร์สำหรับ "Toledo" ที่มี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 ค่าตัวกรองรองรับวิธีการแก้ไขการสะกดและการจับคู่บางส่วนแบบเดียวกับคำขอ Geocoding อื่นๆ

Geocoder จะแสดงเฉพาะผลลัพธ์ที่ตรงกับตัวกรองคอมโพเนนต์ทั้งหมด กล่าวคือ จะประเมินข้อกำหนดของตัวกรองเป็น 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);
  }
});
}

ดำเนินการเมื่อไม่มีผลการค้นหา

สำหรับการเข้ารหัสพิกัดภูมิศาสตร์แบบย้อนกลับ โดยค่าเริ่มต้น ระบบจะหยุดการทำงานของ Promise ที่ status=ZERO_RESULTS อย่างไรก็ตาม ในกรณีนี้ ระบบอาจยังคงป้อนข้อมูลในช่องระดับการตอบกลับเพิ่มเติมของ plus_code และ address_descriptor หากระบุค่าเป็น "จริง" สำหรับพารามิเตอร์ fulfillOnZeroResults ระบบจะป้อนข้อมูลในกรณีนี้ หากระบุค่าเป็นจริงสำหรับพารามิเตอร์ fulfillOnZeroResults สัญญาจะไม่ถูกละเมิด และจะเข้าถึงช่องเพิ่มเติมเหล่านี้ได้จากสัญญาหากมี

ตัวอย่างลักษณะการทำงานนี้สำหรับละติจูด/ลองจิจูดในทวีปแอนตาร์กติกามีดังนี้ แม้ว่าจะไม่มีผลลัพธ์การแปลงพิกัดทางภูมิศาสตร์ย้อนกลับ แต่เราก็ยังพิมพ์รหัส Plus ในสัญญาได้หากตั้งค่า fulfillOnZeroResults=true

    function addressDescriptorReverseGeocoding() {
      var latlng = new google.maps.LatLng(-75.290330, 38.653861);
      geocoder
        .geocode({
          'location': latlng,
          'fulfillOnZeroResults': true,
        })
        .then((response) => {
          console.log(response.plus_code);
        })
        .catch((error) => {
          window.alert(`Error`);
        });
    }
  

ตัวบอกลักษณะที่อยู่

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

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

ตัวอย่างในการเข้ารหัสพิกัดภูมิศาสตร์ของสถานที่

คำค้นหาต่อไปนี้มีที่อยู่ของสถานที่ในเดลี

function addressDescriptorPlaceIdLookup() {
  geocoder.geocode({
  geocoder.geocode({
    'placeId': 'ChIJyxAX8Bj9DDkRgBfAnBYa66Q',
    'extraComputations': ['ADDRESS_DESCRIPTORS']
    }, function(results, status) {
    if (status == 'OK') {
      console.log(results[0].address_descriptor);
    } else {
      window.alert('Geocode was not successful for the following reason: ' + status);
    }
  });
}

ตัวอย่างในการเข้ารหัสพิกัดภูมิศาสตร์แบบย้อนกลับ

คำค้นหาต่อไปนี้มีค่าละติจูด/ลองจิจูดสำหรับสถานที่ใน เดลี

    function addressDescriptorReverseGeocoding() {
      var latlng = new google.maps.LatLng(28.640964,77.235875);
      geocoder
        .geocode({
          'location': latlng,
          'extraComputations': ["ADDRESS_DESCRIPTORS"],
        })
        .then((response) => {
          console.log(response.address_descriptor);
        })
        .catch((error) => {
          window.alert(`Error`);
        });
    }
  

ตัวอย่าง Address Descriptor

ตัวอย่างaddress_descriptorมีดังนี้

  {
    "address_descriptor" : {
       "areas" : [
          {
             "containment" : "OUTSKIRTS",
             "display_name" : {
                "language_code" : "en",
                "text" : "Turkman Gate"
             },
             "place_id" : "ChIJ_7LLvyb9DDkRMKKxP9YyXgs"
          },
          {
             "containment" : "OUTSKIRTS",
             "display_name" : {
                "language_code" : "en",
                "text" : "Chandni Chowk"
             },
             "place_id" : "ChIJWcXciBr9DDkRUb4dCDykTwI"
          },
          {
             "containment" : "NEAR",
             "display_name" : {
                "language_code" : "en",
                "text" : "Katar Ganj"
             },
             "place_id" : "ChIJH3cWUyH9DDkRaw-9CjvcRvY"
          }
       ],
       "landmarks" : [
          {
             "display_name" : {
                "language_code" : "en",
                "text" : "Delite Cinema"
             },
             "straight_line_distance_meters" : 29.9306755065918,
             "place_id" : "ChIJLfiYDCT9DDkROoEa7NdupUM",
             "travel_distance_meters" : 418.7794799804688,
             "spatial_relationship" : "ACROSS_THE_ROAD",
             "types" : [ "establishment", "movie_theater", "point_of_interest" ]
          },
          {
             "display_name" : {
                "language_code" : "en",
                "text" : "YES Bank"
             },
             "straight_line_distance_meters" : 66.83731079101562,
             "place_id" : "ChIJFYHM3yb9DDkRRKGkZl2mpSQ",
             "travel_distance_meters" : 489.0340270996094,
             "spatial_relationship" : "DOWN_THE_ROAD",
             "types" : [ "bank", "establishment", "finance", "point_of_interest" ]
          },
          {
             "display_name" : {
                "language_code" : "en",
                "text" : "UCO Bank"
             },
             "straight_line_distance_meters" : 25.38849639892578,
             "place_id" : "ChIJ-c6_wCb9DDkRjIk1LeqRtGM",
             "travel_distance_meters" : 403.2246398925781,
             "spatial_relationship" : "ACROSS_THE_ROAD",
             "types" : [ "atm", "bank", "establishment", "finance", "point_of_interest" ]
          },
          {
             "display_name" : {
                "language_code" : "en",
                "text" : "Delhi By Cycle Meeting Point"
             },
             "straight_line_distance_meters" : 44.02867126464844,
             "place_id" : "ChIJNxVfkSb9DDkRJD22l-eGFdM",
             "travel_distance_meters" : 97.41281890869141,
             "spatial_relationship" : "AROUND_THE_CORNER",
             "types" : [
                "establishment",
                "point_of_interest",
                "tourist_attraction",
                "travel_agency"
             ]
          },
          {
             "display_name" : {
                "language_code" : "en",
                "text" : "Axis Bank Branch"
             },
             "straight_line_distance_meters" : 102.3495178222656,
             "place_id" : "ChIJr3uaDCT9DDkR8roHTVSn1x4",
             "travel_distance_meters" : 330.8566284179688,
             "spatial_relationship" : "DOWN_THE_ROAD",
             "types" : [ "bank", "establishment", "finance", "point_of_interest" ]
          }
       ]
    }
  }

ออบเจ็กต์ address_descriptor แต่ละรายการมีอาร์เรย์ 2 รายการ ได้แก่ landmarks และ areas อาร์เรย์ landmarks มีผลการค้นหาสูงสุด 5 รายการที่จัดอันดับตามลำดับความเกี่ยวข้องโดยพิจารณาจากระยะทางไปยังพิกัดที่ขอ ความโดดเด่นของสถานที่สำคัญ และการมองเห็น ผลการค้นหาแต่ละรายการจะมีค่าต่อไปนี้

  • place_id คือรหัสสถานที่ของผลการค้นหาสถานที่สำคัญ ดูภาพรวมรหัสสถานที่
  • display_name คือชื่อที่แสดงของสถานที่สำคัญ และมี language_code และ text
  • straight_line_distance_meters คือระยะทางแบบจุดต่อจุดเป็นเมตรระหว่างพิกัดอินพุตกับผลลัพธ์ของจุดสังเกต
  • travel_distance_meters คือระยะทางเป็นเมตรตามที่เดินทางโดยใช้เครือข่ายถนน (ไม่สนใจข้อจำกัดของถนน) ระหว่างพิกัดที่ป้อนและผลลัพธ์ของสถานที่สำคัญ
  • spatial_relationship คือความสัมพันธ์โดยประมาณระหว่างพิกัดอินพุตกับผลลัพธ์ของแลนด์มาร์ก
    • "NEAR" คือความสัมพันธ์เริ่มต้นเมื่อไม่มีข้อใดต่อไปนี้
    • "WITHIN" เมื่อพิกัดอินพุตอยู่ภายในขอบเขตของโครงสร้างที่เชื่อมโยงกับจุดสังเกต
    • "BESIDE" เมื่อพิกัดอินพุตอยู่ติดกับสถานที่สำคัญหรือจุดเข้าถึงของสถานที่สำคัญโดยตรง
    • "ACROSS_THE_ROAD" เมื่อพิกัดอินพุตอยู่ตรงข้ามกับสถานที่สำคัญในอีกฝั่งของเส้นทาง
    • "DOWN_THE_ROAD" เมื่อพิกัดอินพุตอยู่ตามเส้นทางเดียวกับสถานที่สำคัญ แต่ไม่ใช่ "BESIDES" หรือ "ACROSS_THE_ROAD"
    • "AROUND_THE_CORNER" เมื่อพิกัดอินพุตอยู่ตามเส้นทางที่ตั้งฉากกับสถานที่สำคัญ (จำกัดการเลี้ยวเพียงครั้งเดียว)
    • "BEHIND" เมื่อพิกัดอินพุตอยู่ใกล้กับสถานที่สำคัญในเชิงพื้นที่ แต่ไกลจากจุดเข้าถึง
  • types คือประเภทสถานที่ของสถานที่สำคัญ

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

  • place_id คือรหัสสถานที่ของผลลัพธ์พื้นที่ ดูภาพรวมรหัสสถานที่
  • display_name คือชื่อที่แสดงของพื้นที่และมี language_code และ text
  • containment คือความสัมพันธ์ของการบรรจุโดยประมาณระหว่างพิกัดอินพุตกับผลลัพธ์ของพื้นที่
    • "NEAR" คือความสัมพันธ์เริ่มต้นเมื่อไม่มีข้อใดต่อไปนี้
    • "WITHIN" เมื่อพิกัดอินพุตอยู่ใกล้กับกึ่งกลางของพื้นที่
    • "OUTSKIRTS" เมื่อพิกัดอินพุตอยู่ใกล้ขอบของพื้นที่

ความครอบคลุมของตัวอธิบายที่อยู่

ตัวอธิบายที่อยู่จะอยู่ใน GA สำหรับอินเดีย การใช้ตัวอธิบายที่อยู่ในอินเดียจะไม่มีค่าใช้จ่ายเพิ่มเติม และการใช้งานจะครอบคลุมโดย SKU ของ Geocoding (อินเดีย) Essentials ที่มีอยู่

ความคิดเห็น

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

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

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

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

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

TypeScript

let marker;

async function initMap() {
    //  Request the needed libraries.
    const [{ Map, InfoWindow }, { Geocoder }, { AdvancedMarkerElement }] =
        await Promise.all([
            google.maps.importLibrary(
                'maps'
            ) as Promise<google.maps.MapsLibrary>,
            google.maps.importLibrary(
                'geocoding'
            ) as Promise<google.maps.GeocodingLibrary>,
            google.maps.importLibrary(
                'marker'
            ) as Promise<google.maps.MarkerLibrary>,
        ]);

    // Get the gmp-map element.
    const mapElement = document.querySelector(
        'gmp-map'
    ) as google.maps.MapElement;

    // Get the inner map.
    const innerMap = mapElement.innerMap;

    // Get the latlng input box.
    const latLngQuery = document.getElementById('latlng') as HTMLInputElement;

    // Get the submit button.
    const submitButton = document.getElementById('submit') as HTMLElement;

    // Set the cursor to crosshair.
    innerMap.setOptions({
        draggableCursor: 'crosshair',
        zoom: 13,
    });

    // Create a marker for re-use.
    marker = new AdvancedMarkerElement({
        map: innerMap,
    });

    const geocoder = new Geocoder();
    const infowindow = new InfoWindow();

    // Add a click event listener to the submit button.
    submitButton.addEventListener('click', () => {
        geocodeLatLng(geocoder, innerMap, infowindow);
    });

    // Add a click event listener to the map.
    innerMap.addListener('click', (event) => {
        latLngQuery.value = `${event.latLng.lat()}, ${event.latLng.lng()}`;
        geocodeLatLng(geocoder, innerMap, infowindow);
    });

    // Make an initial request upon loading.
    geocodeLatLng(geocoder, innerMap, infowindow);
}

async 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]) {
                marker.position = latlng;
                map.setCenter(latlng);
                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));
}

initMap();

JavaScript

let marker;
async function initMap() {
    //  Request the needed libraries.
    const [{ Map, InfoWindow }, { Geocoder }, { AdvancedMarkerElement }] = await Promise.all([
        google.maps.importLibrary('maps'),
        google.maps.importLibrary('geocoding'),
        google.maps.importLibrary('marker'),
    ]);
    // Get the gmp-map element.
    const mapElement = document.querySelector('gmp-map');
    // Get the inner map.
    const innerMap = mapElement.innerMap;
    // Get the latlng input box.
    const latLngQuery = document.getElementById('latlng');
    // Get the submit button.
    const submitButton = document.getElementById('submit');
    // Set the cursor to crosshair.
    innerMap.setOptions({
        draggableCursor: 'crosshair',
        zoom: 13,
    });
    // Create a marker for re-use.
    marker = new AdvancedMarkerElement({
        map: innerMap,
    });
    const geocoder = new Geocoder();
    const infowindow = new InfoWindow();
    // Add a click event listener to the submit button.
    submitButton.addEventListener('click', () => {
        geocodeLatLng(geocoder, innerMap, infowindow);
    });
    // Add a click event listener to the map.
    innerMap.addListener('click', (event) => {
        latLngQuery.value = `${event.latLng.lat()}, ${event.latLng.lng()}`;
        geocodeLatLng(geocoder, innerMap, infowindow);
    });
    // Make an initial request upon loading.
    geocodeLatLng(geocoder, innerMap, infowindow);
}
async 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]) {
            marker.position = latlng;
            map.setCenter(latlng);
            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));
}
initMap();
ดูตัวอย่าง

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

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

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

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

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;
ดูตัวอย่าง

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