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

ภาพรวม

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

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

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

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

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

ก่อนใช้บริการ Geocoding ใน 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. เลือกเปิดใช้ เมื่อกระบวนการเสร็จสิ้นแล้ว Geocoding API จะปรากฏในรายการ API ในแดชบอร์ด

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

ราคา

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

นโยบาย

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

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

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

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

ค่าลิเทอรัลของออบเจ็กต์ 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 จะมีผลต่อผลการค้นหาจากโปรแกรมเข้ารหัสพิกัดภูมิศาสตร์เท่านั้น (ไม่จำกัดทั้งหมด) ดูข้อมูลเพิ่มเติมเกี่ยวกับการให้น้ำหนักรหัสภูมิภาคด้านล่าง
  • extraComputations — ค่าที่อนุญาตเพียงค่าเดียวสำหรับพารามิเตอร์นี้คือ ADDRESS_DESCRIPTORS ดูรายละเอียดเพิ่มเติมใน ข้อบ่งชี้ที่อยู่
  • fulfillOnZeroResults — ปฏิบัติตามคำสัญญาโดยมีสถานะเป็น ZERO_RESULT ใน การตอบกลับ การดำเนินการนี้อาจมีประโยชน์เนื่องจากแม้จะไม่มีผลลัพธ์การเข้ารหัสพิกัดภูมิศาสตร์ แต่ก็ยังมีฟิลด์ระดับการตอบกลับเพิ่มเติมแสดงอยู่ ดูรายละเอียดเพิ่มเติมใน ดำเนินการตามผลลัพธ์ที่ไม่มีผลลัพธ์

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

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

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

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

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

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

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

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

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

  • route ตรงกับชื่อยาวหรือสั้นของเส้นทาง
  • locality จะจับคู่กับประเภทย่านและย่านย่อย
  • administrativeArea ตรงกับเขตบริหารทุกระดับ
  • postalCode ตรงกับรหัสไปรษณีย์และคำนำหน้ารหัสไปรษณีย์
  • country ตรงกับชื่อประเทศหรือรหัสประเทศแบบ ISO 3166-1 2 ตัวอักษร หมายเหตุ: 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);
  }
});
}

ดำเนินการตามคำสั่งซื้อเมื่อผลลัพธ์เป็น 0 รายการ

สำหรับการระบุพิกัดทางภูมิศาสตร์แบบย้อนกลับ โดยค่าเริ่มต้นแล้วสัญญาจะเสียหายในวันที่ status=ZERO_RESULTS แต่ในกรณีนี้ ระบบอาจยังเติมข้อมูลในช่องระดับคำตอบเพิ่มเติมของ plus_code และ address_descriptor หากระบุเป็น "จริง" สำหรับพารามิเตอร์ 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({ 
    '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" : {
       "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" เมื่อพิกัดอินพุตอยู่ใกล้กับขอบของพื้นที่

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

ฟีเจอร์นี้มีให้บริการในบางประเทศเท่านั้น

นี่เป็นฟีเจอร์เวอร์ชันตัวอย่างและเรายินดีรับฟังความคิดเห็น โปรดส่งอีเมลถึงเราที่ address-descriptors-feedback@google.com

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

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

ป้อนคู่ละติจูด/ลองจิจูดที่คั่นด้วยคอมมาในพารามิเตอร์ 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;
ดูตัวอย่าง

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