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

ภาพรวม

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

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

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

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

นโยบาย

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

คําขอพิกัดทางภูมิศาสตร์

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

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

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

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

รหัสพิกัดภูมิศาสตร์

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

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

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

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

โปรดดูคําอธิบายเกี่ยวกับช่องต่างๆ ด้านล่างนี้

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

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

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

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

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

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

    • types[] คืออาร์เรย์ที่ระบุประเภทของคอมโพเนนต์ที่อยู่ ดูรายการประเภทที่รองรับ
    • long_name คือคําอธิบายข้อความทั้งหมดหรือชื่อของคอมโพเนนต์ที่อยู่ที่ Geocoder แสดงผล
    • short_name เป็นชื่อย่อของคอมโพเนนต์ที่อยู่ (หากมี) เช่น คอมโพเนนต์ที่อยู่ในรัฐอะแลสกาอาจมี long_name เป็น "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 APIs อื่นๆ ได้ ตัวอย่างเช่น คุณใช้ place_id ที่มีไลบรารี Google Places API เพื่อดูรายละเอียดของธุรกิจในพื้นที่ได้ เช่น หมายเลขโทรศัพท์ เวลาทําการ รีวิวจากผู้ใช้ และอื่นๆ ดู ภาพรวมรหัสสถานที่
  • postcode_localities[] เป็นอาร์เรย์ที่แสดงชื่อย่านทั้งหมดที่มีอยู่ในรหัสไปรษณีย์ และจะปรากฏขึ้นเมื่อผลลัพธ์เป็นรหัสไปรษณีย์ที่มีในหลายพื้นที่เท่านั้น
  • geometry มีข้อมูลต่อไปนี้

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

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

ที่อยู่จะส่งกลับมาโดย Geocoder โดยใช้การตั้งค่าภาษาที่เบราว์เซอร์ต้องการ หรือภาษาที่ระบุเมื่อโหลด API แบบ JavaScript โดยใช้พารามิเตอร์ 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 หมายถึงเอนทิตีลําดับที่สองของลําดับที่ต่ํากว่าระดับประเทศ สําหรับสหรัฐอเมริกา ระดับการดูแลระบบเหล่านี้เป็นเคาน์ตี บางประเทศอาจไม่ได้แสดงระดับการดูแลระบบเหล่านี้
  • administrative_area_level_3 หมายถึงเอนทิตีลําดับที่ 3 ของลําดับที่ต่ํากว่า ระดับประเทศ ประเภทนี้แสดงถึงแผนกย่อย บางประเทศอาจไม่ได้แสดงระดับการดูแลระบบเหล่านี้
  • administrative_area_level_4 เป็นเอนทิตีลําดับที่ 4 ลําดับต่ํากว่าระดับประเทศ ประเภทนี้แสดงถึงแผนกย่อย บางประเทศอาจไม่ได้แสดงระดับการดูแลระบบเหล่านี้
  • administrative_area_level_5 หมายถึงเอนทิตีลําดับที่ 5 ลําดับต่ํากว่าระดับประเทศ ประเภทนี้แสดงถึงแผนกย่อย บางประเทศอาจไม่ได้แสดงระดับการดูแลระบบเหล่านี้
  • administrative_area_level_6 ระบุเอนทิตีลําดับที่ 6 ของลําดับต่ํากว่าระดับประเทศ ประเภทนี้แสดงถึงแผนกย่อย บางประเทศอาจไม่ได้แสดงระดับการดูแลระบบเหล่านี้
  • administrative_area_level_7 บ่งบอกว่าเป็นหน่วยงานโยธาลําดับที่ 7 ระดับประเทศ ประเภทนี้แสดงถึงแผนกย่อย บางประเทศอาจไม่ได้แสดงระดับการดูแลระบบเหล่านี้
  • colloquial_area หมายถึงชื่ออื่นที่ใช้กันโดยทั่วไปสําหรับเอนทิตี
  • locality เป็นหน่วยงานทางการเมืองระดับเมือง
  • sublocality เป็นเอนทิตีลําดับแรกสําหรับลําดับที่อยู่ต่ํากว่าสถานที่ตั้ง สถานที่บางแห่งอาจได้รับประเภทเพิ่มเติม 1 ประเภท ได้แก่ sublocality_level_1 ถึง sublocality_level_5 ระดับย่อยระดับย่อยเป็นเอนทิตีระดับโยธา จํานวนที่มากกว่าหมายถึงพื้นที่ทางภูมิศาสตร์ที่มีขนาดเล็ก
  • neighborhood หมายถึงย่านใกล้เคียงที่มีชื่อ
  • premise แสดงถึงสถานที่ที่มีชื่อ ซึ่งโดยปกติจะเป็นอาคารหรือคอลเล็กชันของอาคารที่มีชื่อทั่วไป
  • subpremise ระบุเอนทิตีคําสั่งซื้อแรกด้านล่างสถานที่ตั้งที่มีชื่อ โดยทั่วไปจะเป็นอาคารเอกพจน์ภายในกลุ่มอาคารที่มีชื่อเดียวกัน
  • plus_code หมายถึงการอ้างอิงตําแหน่งที่เข้ารหัสซึ่งมาจากละติจูดและลองจิจูด Plus Codes สามารถใช้แทนที่ที่อยู่ของที่อยู่ในสถานที่ที่ไม่มีอยู่จริงได้ (โดยไม่มีหมายเลขอาคารหรือไม่มีชื่อถนน) ดูรายละเอียดได้ที่ https://plus.codes
  • postal_code หมายถึงรหัสไปรษณีย์ที่ใช้ระบุที่อยู่ไปรษณีย์ภายในประเทศ
  • natural_feature หมายถึงจุดสนใจตามธรรมชาติ
  • airport หมายถึงสนามบิน
  • park หมายถึงสวนสาธารณะที่มีชื่อ
  • point_of_interest หมายถึงจุดสนใจที่มีชื่อ โดยทั่วไปแล้ว "POI" เหล่านี้เป็นเอนทิตีในพื้นที่ที่โดดเด่นซึ่งไม่เหมาะกับหมวดหมู่อื่น เช่น "ตึกเอ็มไพร์สเตท" หรือ "หอไอเฟล"

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

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

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

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

รหัสสถานะ

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

  • "OK" บ่งบอกว่าไม่มีข้อผิดพลาดเกิดขึ้น ระบบแยกวิเคราะห์ที่อยู่สําเร็จแล้วและแสดงพิกัดทางภูมิศาสตร์อย่างน้อย 1 รายการ
  • "ZERO_RESULTS" ระบุว่ารหัสพิกัดทํางานสําเร็จ แต่ไม่พบผลลัพธ์ กรณีนี้อาจเกิดขึ้นหากโปรแกรมพิกัดภูมิศาสตร์ผ่าน address ที่ไม่มีอยู่จริง
  • "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 เพื่อกําหนดกรอบล้อมรอบ San Fernando Valley ของลอสแอนเจลิส ทําให้ระบบพิกัดทางภูมิศาสตร์ที่แสดงย่านใกล้เคียงที่ชื่อ "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 หลักเสนอการระบุพิกัดทางภูมิศาสตร์ โปรดทราบว่าการให้น้ําหนักพิเศษเฉพาะผลลัพธ์สําหรับโดเมนที่ระบุเท่านั้น หากมีผลลัพธ์ที่เกี่ยวข้องภายนอกโดเมนนี้ ผลลัพธ์เหล่านี้อาจรวมอยู่ในโดเมนดังกล่าว

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

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

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

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

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

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

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

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

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

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

แทนที่จะระบุ 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 APIs อื่นๆ ได้ ตัวอย่างเช่น คุณอาจระบุ 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;
ดูตัวอย่าง

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