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

ภาพรวม

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

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

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

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

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

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

นโยบาย

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

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

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

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

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

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

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

{
  "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);
  }
});
}

ดำเนินการเมื่อไม่มีผลลัพธ์

สําหรับการแปลงพิกัดภูมิศาสตร์แบบย้อนกลับ ระบบจะถือว่าการรับประกันใช้งานไม่ได้ใน 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

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

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

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

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

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

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