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

ภาพรวม

การแปลงพิกัดภูมิศาสตร์คือกระบวนการแปลงที่อยู่ (เช่น "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 API

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

การเข้าถึงบริการการแปลงที่อยู่เป็นพิกัดภูมิศาสตร์เป็นแบบไม่พร้อมกัน เนื่องจาก 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 — รหัสสถานที่ของสถานที่ที่คุณต้องการ รับที่อยู่ที่ใกล้ที่สุดซึ่งมนุษย์อ่านได้ ดูข้อมูลเพิ่มเติมเกี่ยวกับการดึงที่อยู่สำหรับรหัสสถานที่

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

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

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

บริการการแปลงที่อยู่เป็นพิกัดภูมิศาสตร์ต้องใช้เมธอดการเรียกกลับเพื่อดำเนินการเมื่อดึงข้อมูลผลลัพธ์ของตัวแปลงที่อยู่เป็นพิกัดภูมิศาสตร์ การเรียกกลับนี้ควรส่งพารามิเตอร์ 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 เป็น "Alaska" และ 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 บ่งชี้ถึงหน่วยงานพลเรือนที่มีการสั่งซื้อครั้งแรกซึ่งต่ำกว่าระดับประเทศ ส่วนในสหรัฐอเมริกา ระดับการดูแลระบบเหล่านี้คือรัฐ ระดับการปกครองเหล่านี้ไม่ได้มีในทุกประเทศ ในกรณีส่วนใหญ่ ชื่อย่อของ 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 หมายถึงนิติบุคคลภาครัฐระดับล่างสุดที่อยู่ภายใต้เขตท้องที่ สำหรับบางสถานที่อาจได้รับป้ายประเภทเพิ่มเติมประเภทใดประเภทหนึ่งต่อไปนี้ 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

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

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

ตัวกรองคอมโพเนนต์ประกอบด้วยรายการต่อไปนี้อย่างน้อย 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);
  }
});
}

ดำเนินการตามคำสั่งซื้อเมื่อผลลัพธ์เป็น 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 มีดังนี้

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

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