Places Library

นักพัฒนาซอฟต์แวร์ในเขตเศรษฐกิจยุโรป (EEA)

ภาพรวม

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

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

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

หากคุณไม่คุ้นเคยกับ JavaScript API ของ Maps หรือ JavaScript เราขอแนะนำให้ศึกษา JavaScript และรับคีย์ API ก่อนเริ่มต้นใช้งาน

โหลดไลบรารี

บริการ Places เป็นไลบรารีแบบสแตนด์อโลนที่แยกจากโค้ดหลักของ Maps JavaScript API หากต้องการใช้ฟังก์ชันการทำงานที่มี ในไลบรารีนี้ คุณต้องโหลดไลบรารีโดยใช้พารามิเตอร์ libraries ใน URL การเริ่มต้นของ Maps API ก่อน

<script async
    src="https://maps.googleapis.com/maps/api/js?key=YOUR_API_KEY&loading=async&libraries=places&callback=initMap">
</script>

ดูข้อมูลเพิ่มเติมได้ที่ ภาพรวมของไลบรารี

เพิ่ม Places API ลงในรายการข้อจำกัด API ของคีย์ API

การใช้การจำกัด API กับคีย์จะจำกัดการใช้งานคีย์ API สำหรับ API หรือ SDK อย่างน้อย 1 รายการ ระบบจะประมวลผลคำขอที่ส่งไปยัง API หรือ SDK ที่เชื่อมโยงกับคีย์ API คำขอที่ส่งไปยัง API หรือ SDK ที่ไม่ได้เชื่อมโยงกับคีย์ API จะล้มเหลว หากต้องการจำกัดคีย์ API เพื่อใช้กับ Places Library, Maps JavaScript API ให้ทำดังนี้
  1. ไปที่ Google Cloud Console
  2. คลิกเมนูแบบเลื่อนลงของโปรเจ็กต์ แล้วเลือกโปรเจ็กต์ที่มีคีย์ API ที่ต้องการรักษาความปลอดภัย
  3. คลิกปุ่มเมนู แล้วเลือก Google Maps Platform > ข้อมูลเข้าสู่ระบบ
  4. ในหน้าข้อมูลเข้าสู่ระบบ ให้คลิกชื่อคีย์ API ที่ต้องการรักษาความปลอดภัย
  5. ในหน้าจำกัดและเปลี่ยนชื่อคีย์ API ให้ตั้งค่าข้อจำกัดดังนี้
    • ข้อจำกัด API
      • เลือกจำกัดคีย์
      • คลิกเลือก API แล้วเลือกทั้ง Maps JavaScript API และ Places API
        (หากไม่มี API ใด API หนึ่งอยู่ในรายการ คุณต้องเปิดใช้)
  6. คลิกบันทึก

ขีดจำกัดและนโยบายการใช้งาน

โควต้า

Places Library ใช้โควต้าการใช้งานร่วมกับ Places API ตามที่อธิบายไว้ในเอกสารประกอบเกี่ยวกับขีดจำกัดการใช้งานสำหรับ Places API

นโยบาย

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

การค้นหาสถานที่

บริการ Places ช่วยให้คุณค้นหาได้หลายประเภทดังนี้

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

คำขอ Find Place

คำขอ Find Place ช่วยให้คุณค้นหาสถานที่ได้ทั้งโดยใช้ข้อความค้นหาหรือ หมายเลขโทรศัพท์ คำขอ Find Place มี 2 ประเภท ได้แก่

ค้นหาสถานที่จากคำค้นหา

ค้นหาสถานที่จากคำค้นหาจะรับข้อความนำเข้าและแสดงผลสถานที่ ข้อมูลที่ป้อนอาจเป็นข้อมูลสถานที่ประเภทใดก็ได้ เช่น ชื่อธุรกิจหรือที่อยู่ หากต้องการส่งคำขอ ค้นหาสถานที่จากคำค้นหา ให้เรียกใช้เมธอด PlacesService's findPlaceFromQuery() ซึ่งใช้พารามิเตอร์ต่อไปนี้

  • query (ต้องระบุ) สตริงข้อความที่จะค้นหา เช่น "ร้านอาหาร" หรือ "123 ถนนเมน" ต้องเป็นชื่อสถานที่ ที่อยู่ หรือหมวดหมู่ของสถานประกอบการ อินพุตประเภทอื่นๆ อาจทำให้เกิดข้อผิดพลาดและไม่รับประกันว่าจะแสดงผลลัพธ์ที่ถูกต้อง Places API จะแสดงผลการจับคู่ที่เหมาะสมโดยอิงตามสตริงนี้และจัดลำดับผลลัพธ์ ตามความเกี่ยวข้องที่รับรู้
  • fields (ต้องระบุ) ฟิลด์อย่างน้อย 1 รายการ ที่ระบุประเภทข้อมูลสถานที่ที่จะแสดง
  • locationBias (ไม่บังคับ) พิกัดที่กำหนดพื้นที่ที่จะค้นหา ซึ่งอาจเป็นข้อมูลต่อไปนี้
    • ชุดพิกัดละติจูด/ลองจิจูดที่ระบุเป็น LatLngLiteral หรือออบเจ็กต์ LatLng
    • ขอบเขตสี่เหลี่ยมผืนผ้า (พิกัดละติจูด/ลองจิจูด 2 คู่ หรือออบเจ็กต์ LatLngBounds)
    • รัศมี (เป็นเมตร) ที่มีจุดศูนย์กลางเป็นละติจูด/ลองจิจูด

นอกจากนี้ คุณยังต้องส่งเมธอด Callback ไปยัง findPlaceFromQuery() เพื่อจัดการออบเจ็กต์ผลลัพธ์และคำตอบ google.maps.places.PlacesServiceStatus

ตัวอย่างต่อไปนี้แสดงการเรียก findPlaceFromQuery() เพื่อค้นหา "Museum of Contemporary Art Australia" และรวมฟิลด์ name และ geometry

var map;
var service;
var infowindow;

function initMap() {
  var sydney = new google.maps.LatLng(-33.867, 151.195);

  infowindow = new google.maps.InfoWindow();

  map = new google.maps.Map(
      document.getElementById('map'), {center: sydney, zoom: 15});

  var request = {
    query: 'Museum of Contemporary Art Australia',
    fields: ['name', 'geometry'],
  };

  var service = new google.maps.places.PlacesService(map);

  service.findPlaceFromQuery(request, function(results, status) {
    if (status === google.maps.places.PlacesServiceStatus.OK) {
      for (var i = 0; i < results.length; i++) {
        createMarker(results[i]);
      }
      map.setCenter(results[0].geometry.location);
    }
  });
}
ดูตัวอย่าง

ค้นหาสถานที่จากหมายเลขโทรศัพท์

ค้นหาสถานที่จากหมายเลขโทรศัพท์จะรับหมายเลขโทรศัพท์และแสดงผลสถานที่ หากต้องการส่งคำขอ Find Place จากหมายเลขโทรศัพท์ ให้เรียกใช้เมธอด findPlaceFromPhoneNumber() ของ PlacesService ซึ่งใช้พารามิเตอร์ต่อไปนี้

  • phoneNumber (ต้องระบุ) หมายเลขโทรศัพท์ในรูปแบบ E.164
  • fields (ต้องระบุ) ฟิลด์อย่างน้อย 1 รายการ ที่ระบุประเภทข้อมูลสถานที่ที่จะแสดง
  • locationBias (ไม่บังคับ) พิกัดที่กำหนดพื้นที่ที่จะ ค้นหา ซึ่งอาจเป็นข้อมูลต่อไปนี้
    • ชุดพิกัดละติจูด/ลองจิจูดที่ระบุเป็น LatLngLiteral หรือออบเจ็กต์ LatLng
    • ขอบเขตสี่เหลี่ยมผืนผ้า (จุดละติจูด/ลองจิจูด 4 จุด หรือออบเจ็กต์ LatLngBounds)
    • รัศมี (เป็นเมตร) ที่มีจุดศูนย์กลางเป็นละติจูด/ลองจิจูด

นอกจากนี้ คุณยังต้องส่งเมธอด Callback ไปยัง findPlaceFromPhoneNumber() เพื่อจัดการออบเจ็กต์ผลลัพธ์และคำตอบ google.maps.places.PlacesServiceStatus

ฟิลด์ (วิธีการค้นหาสถานที่)

ใช้พารามิเตอร์ fields เพื่อระบุอาร์เรย์ของประเภทข้อมูลสถานที่ที่จะแสดงผล ตัวอย่างเช่น fields: ['formatted_address', 'opening_hours', 'geometry'] ใช้จุดเมื่อระบุค่าผสม ตัวอย่างเช่น opening_hours.weekday_text

ฟิลด์จะสอดคล้องกับผลการค้นหาสถานที่ และแบ่งออกเป็น หมวดหมู่การเรียกเก็บเงิน 3 หมวดหมู่ ได้แก่ ข้อมูลพื้นฐาน ข้อมูลติดต่อ และบรรยากาศ ระบบจะเรียกเก็บเงินสำหรับฟิลด์พื้นฐานตามอัตราฐาน และไม่มีค่าใช้จ่ายเพิ่มเติม ระบบจะเรียกเก็บเงินสำหรับฟิลด์ Contact และ Atmosphere ในอัตราที่สูงขึ้น ดูข้อมูลเพิ่มเติมได้ที่ตารางราคา ระบบจะแสดงการระบุแหล่งที่มา (html_attributions) ทุกครั้งที่เรียกใช้ ไม่ว่ามีการขอฟิลด์หรือไม่ก็ตาม

พื้นฐาน

หมวดหมู่พื้นฐานประกอบด้วยช่องต่อไปนี้
business_status, formatted_address, geometry, icon,icon_mask_base_uri, icon_background_color, name, permanently_closed (เลิกใช้งานแล้ว), photos, place_id, plus_code, types

การติดต่อ

หมวดหมู่รายชื่อติดต่อมีฟิลด์ต่อไปนี้ opening_hours
(เลิกใช้งานแล้ว ใน Places Library, Maps JavaScript API ใช้คำขอรายละเอียดสถานที่เพื่อรับ opening_hoursผลลัพธ์)

บรรยากาศ

หมวดหมู่บรรยากาศมีฟิลด์ต่อไปนี้ price_level, rating, user_ratings_total

เมธอด findPlaceFromQuery() และ findPlaceFromPhoneNumber() จะใช้ชุดฟิลด์เดียวกัน และสามารถแสดงฟิลด์เดียวกันในคำตอบที่เกี่ยวข้องได้

ตั้งค่าอคติของสถานที่ (วิธีการค้นหาสถานที่)

ใช้พารามิเตอร์ locationBias เพื่อให้ Find Place แสดงผลลัพธ์ในพื้นที่หนึ่งๆ คุณตั้งค่า locationBias ได้ด้วยวิธีต่อไปนี้

เอนเอียงผลการค้นหาไปยังพื้นที่ที่เฉพาะเจาะจง

locationBias: {lat: 37.402105, lng: -122.081974}

กำหนดพื้นที่สี่เหลี่ยมผืนผ้าที่จะค้นหา

locationBias: {north: 37.41, south: 37.40, east: -122.08, west: -122.09}

นอกจากนี้ คุณยังใช้ LatLngBounds ได้ด้วย

กำหนดรัศมีที่จะค้นหา (เป็นเมตร) โดยมีศูนย์กลางอยู่ที่พื้นที่ใดพื้นที่หนึ่ง

locationBias: {radius: 100, center: {lat: 37.402105, lng: -122.081974}}

คำขอการค้นหาในบริเวณใกล้เคียง

การค้นหาใกล้เคียงช่วยให้คุณค้นหาสถานที่ภายในพื้นที่ที่ระบุได้โดยใช้คีย์เวิร์ดหรือประเภท การค้นหาใกล้เคียงต้องระบุสถานที่ตั้งเสมอ ซึ่งระบุได้ 2 วิธีดังนี้

  • LatLngBounds
  • พื้นที่วงกลมที่กำหนดเป็นชุดค่าผสมของพร็อพเพอร์ตี้ location ซึ่งระบุจุดศูนย์กลางของวงกลมเป็นออบเจ็กต์ LatLng และรัศมีที่วัดเป็นเมตร

การค้นหาสถานที่ใกล้เคียงจะเริ่มต้นด้วยการเรียกใช้เมธอด nearbySearch() ของ PlacesService ซึ่งจะ แสดงผลอาร์เรย์ของออบเจ็กต์ PlaceResult โปรดทราบว่าวิธี nearbySearch() จะแทนที่วิธี search() ตั้งแต่เวอร์ชัน 3.9 เป็นต้นไป

service = new google.maps.places.PlacesService(map);
service.nearbySearch(request, callback);

เมธอดนี้รับคำขอที่มีช่องต่อไปนี้

  • อย่างใดอย่างหนึ่งต่อไปนี้
    • bounds ซึ่งต้องเป็นออบเจ็กต์ google.maps.LatLngBounds ที่กำหนดพื้นที่ค้นหารูปสี่เหลี่ยมผืนผ้า ระยะทางแนวทแยงสูงสุดที่รองรับสำหรับพื้นที่ขอบเขต คือประมาณ 100,000 เมตร
    • location และ radius โดยlocation จะรับออบเจ็กต์ google.maps.LatLng ส่วน radius จะรับจำนวนเต็ม ธรรมดาซึ่งแสดงถึงรัศมีของวงกลมในหน่วยเมตร รัศมีสูงสุดที่อนุญาตคือ 50,000 เมตร โปรดทราบว่าเมื่อตั้งค่า rankBy เป็น DISTANCE คุณต้องระบุ location แต่จะระบุ radius หรือ bounds ไม่ได้
  • keyword (ไม่บังคับ) — คำที่จะจับคู่ กับช่องที่มีทั้งหมด ซึ่งรวมถึงแต่ไม่จำกัดเพียงชื่อ ประเภท และ ที่อยู่ รวมถึงรีวิวของลูกค้าและเนื้อหาอื่นๆ ของบุคคลที่สาม
  • minPriceLevel และ maxPriceLevel (ไม่บังคับ) — จำกัดผลการค้นหาให้แสดงเฉพาะสถานที่ที่อยู่ภายใน ช่วงที่ระบุ ค่าที่ใช้ได้อยู่ระหว่าง 0 (ราคาถูกที่สุด) ถึง 4 (แพงที่สุด)
  • name เลิกใช้งานแล้ว เทียบเท่ากับ keyword ค่า ในช่องนี้จะรวมกับค่าในช่อง keyword และส่งเป็นส่วนหนึ่งของสตริงการค้นหาเดียวกัน
  • openNow (ไม่บังคับ) — ค่าบูลีน ซึ่งระบุว่าบริการ Places ควรแสดงเฉพาะสถานที่ที่ เปิดให้บริการในขณะที่ส่งคำค้นหา สถานที่ที่ไม่ได้ ระบุเวลาทำการในฐานข้อมูล Google Places จะไม่ แสดงหากคุณรวมพารามิเตอร์นี้ไว้ในการค้นหา การตั้งค่า openNow เป็น false จะไม่มีผล
  • rankBy (ไม่บังคับ) — ระบุลำดับที่แสดงผลลัพธ์ ค่าที่เป็นไปได้มีดังนี้
    • google.maps.places.RankBy.PROMINENCE (ค่าเริ่มต้น) ตัวเลือกนี้ จะจัดเรียงผลลัพธ์ตามความสำคัญ การจัดอันดับจะ ให้ความสำคัญกับสถานที่ที่โดดเด่นภายในรัศมีที่กำหนดมากกว่าสถานที่ใกล้เคียง ที่ตรงกันแต่มีความโดดเด่นน้อยกว่า ความโดดเด่นอาจได้รับผลกระทบจากอันดับของสถานที่ในดัชนีของ Google ความนิยมทั่วโลก และปัจจัยอื่นๆ เมื่อระบุ google.maps.places.RankBy.PROMINENCE จะต้องระบุพารามิเตอร์ radius
    • google.maps.places.RankBy.DISTANCE ตัวเลือกนี้จะ จัดเรียงผลลัพธ์จากน้อยไปมากตามระยะทางจากlocationที่ระบุ (ต้องระบุ) โปรดทราบว่าคุณไม่สามารถระบุ bounds และ/หรือ radius ที่กำหนดเองได้หากระบุ RankBy.DISTANCE เมื่อระบุ RankBy.DISTANCE คุณต้องระบุ keyword, name หรือ type อย่างน้อย 1 รายการ
  • type — จำกัดผลการค้นหาให้แสดงเฉพาะสถานที่ที่ตรงกับประเภทที่ระบุ ระบุได้เพียงประเภทเดียว (หากระบุมากกว่า 1 ประเภท ระบบจะละเว้นประเภททั้งหมดที่ตามหลังรายการแรก) ดูรายการประเภทที่รองรับ

นอกจากนี้ คุณยังต้องส่งเมธอด Callback ไปยัง nearbySearch() เพื่อ จัดการออบเจ็กต์ผลลัพธ์และ การตอบกลับ google.maps.places.PlacesServiceStatus

var map;
var service;
var infowindow;

function initialize() {
  var pyrmont = new google.maps.LatLng(-33.8665433, 151.1956316);

  map = new google.maps.Map(document.getElementById('map'), {
      center: pyrmont,
      zoom: 15
    });

  var request = {
    location: pyrmont,
    radius: 500,
    type: 'restaurant'
  };

  service = new google.maps.places.PlacesService(map);
  service.nearbySearch(request, callback);
}

function callback(results, status) {
  if (status == google.maps.places.PlacesServiceStatus.OK) {
    for (var i = 0; i < results.length; i++) {
      createMarker(results[i]);
    }
  }
}

ดูตัวอย่าง

คำขอค้นหาข้อความ

บริการค้นหาข้อความของ Google Places เป็นบริการบนเว็บที่แสดง ข้อมูลเกี่ยวกับชุดสถานที่ตามสตริง เช่น "พิซซ่าในนิวยอร์ก" หรือ "ร้านขายรองเท้าใกล้กับออตตาวา" บริการจะตอบกลับด้วย รายการสถานที่ที่ตรงกับสตริงข้อความและค่าความเอนเอียงของตำแหน่งที่ ตั้งไว้ การตอบกลับการค้นหาจะมีรายการสถานที่ คุณสามารถส่งคำขอรายละเอียดสถานที่เพื่อดูข้อมูลเพิ่มเติมเกี่ยวกับสถานที่ใดก็ได้ในคำตอบ

การค้นหาด้วยข้อความจะเริ่มต้นด้วยการเรียกใช้เมธอด textSearch() ของ PlacesService

service = new google.maps.places.PlacesService(map);
service.textSearch(request, callback);

เมธอดนี้รับคำขอที่มีช่องต่อไปนี้

  • query (ต้องระบุ) สตริงข้อความที่จะค้นหา เช่น "ร้านอาหาร" หรือ "123 Main Street" ต้องเป็นชื่อสถานที่ ที่อยู่ หรือหมวดหมู่ของสถานประกอบการ อินพุตประเภทอื่นๆ อาจ ทำให้เกิดข้อผิดพลาดและไม่รับประกันว่าจะแสดงผลลัพธ์ที่ถูกต้อง บริการ Places จะแสดงรายการที่ตรงกันที่เป็นไปได้โดยอิงตามสตริงนี้ และจัดลำดับ ผลลัพธ์ตามความเกี่ยวข้องที่รับรู้ พารามิเตอร์นี้จะกลายเป็นพารามิเตอร์ที่ไม่บังคับ หากใช้พารามิเตอร์ type ในคำขอค้นหาด้วย
  • ไม่บังคับ
    • openNow — ค่าบูลีน ซึ่งระบุว่าบริการ Places ควรแสดงเฉพาะสถานที่ที่ เปิดให้บริการในขณะที่ส่งคำค้นหา สถานที่ที่ไม่ได้ ระบุเวลาทำการในฐานข้อมูล Google Places จะไม่ แสดงหากคุณรวมพารามิเตอร์นี้ไว้ในการค้นหา การตั้งค่า openNow เป็น false จะไม่มีผล
    • minPriceLevel และ maxPriceLevel — จำกัดผลการค้นหาให้แสดงเฉพาะสถานที่ที่อยู่ใน ระดับราคาที่ระบุ ค่าที่ใช้ได้อยู่ในช่วงตั้งแต่ 0 (ราคาถูกที่สุด) ถึง 4 (แพงที่สุด)
    • อย่างใดอย่างหนึ่งต่อไปนี้
      • bounds ซึ่งต้องเป็นออบเจ็กต์ google.maps.LatLngBounds ที่กำหนดพื้นที่ค้นหาสี่เหลี่ยมผืนผ้า ระยะทางแนวทแยงสูงสุดที่รองรับสำหรับพื้นที่ขอบเขต คือประมาณ 100,000 เมตร
      • location และ radius - คุณอาจ เอนเอียงผลลัพธ์ไปยังวงกลมที่ระบุโดยส่งพารามิเตอร์ location และ radius ซึ่งจะ สั่งให้บริการ Places แสดงผลลัพธ์ภายในวงกลมนั้น ระบบอาจยังแสดงผลลัพธ์ที่อยู่นอกพื้นที่ที่กำหนด ตำแหน่งรับออบเจ็กต์ google.maps.LatLng และ รัศมีรับจำนวนเต็มอย่างง่าย ซึ่งแสดงถึงรัศมีของวงกลม ในหน่วยเมตร รัศมีสูงสุดที่อนุญาตคือ 50,000 เมตร
    • type — จำกัดผลการค้นหาให้แสดงเฉพาะสถานที่ที่ตรงกับ ประเภทที่ระบุ ระบุได้เพียงประเภทเดียว (หากระบุมากกว่า 1 ประเภท ระบบจะละเว้นประเภททั้งหมดที่ตามหลังรายการแรก) ดูรายการประเภทที่รองรับ

นอกจากนี้ คุณยังต้องส่งเมธอด Callback ไปยัง textSearch() เพื่อ จัดการออบเจ็กต์ผลลัพธ์และ การตอบกลับ google.maps.places.PlacesServiceStatus

var map;
var service;
var infowindow;

function initialize() {
  var pyrmont = new google.maps.LatLng(-33.8665433,151.1956316);

  map = new google.maps.Map(document.getElementById('map'), {
      center: pyrmont,
      zoom: 15
    });

  var request = {
    location: pyrmont,
    radius: 500,
    query: 'restaurant'
  };

  service = new google.maps.places.PlacesService(map);
  service.textSearch(request, callback);
}

function callback(results, status) {
  if (status == google.maps.places.PlacesServiceStatus.OK) {
    for (var i = 0; i < results.length; i++) {
      var place = results[i];
      createMarker(results[i]);
    }
  }
}

การตอบกลับการค้นหา

รหัสสถานะ

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

  • INVALID_REQUEST: คำขอนี้ไม่ถูกต้อง
  • OK: คำตอบมีผลลัพธ์ที่ถูกต้อง
  • OVER_QUERY_LIMIT: หน้าเว็บส่งคำขอเกินโควต้า แล้ว
  • REQUEST_DENIED: หน้าเว็บไม่ได้รับอนุญาตให้ใช้ PlacesService
  • UNKNOWN_ERROR: ประมวลผลคำขอ PlacesService ไม่ได้ เนื่องจากเซิร์ฟเวอร์เกิดข้อผิดพลาด คำขออาจสำเร็จหากคุณลองอีกครั้ง
  • ZERO_RESULTS: ไม่พบผลลัพธ์สำหรับคำขอนี้

ผลการค้นหาสถานที่

ฟังก์ชัน findPlace(), nearbySearch() และ textSearch() จะแสดงผลอาร์เรย์ของออบเจ็กต์ PlaceResult

ออบเจ็กต์ PlaceResult แต่ละรายการอาจมีพร็อพเพอร์ตี้ต่อไปนี้

  • business_status ระบุสถานะการดำเนินงานของสถานที่ หากเป็นธุรกิจ โดยอาจมีค่าใดค่าหนึ่งต่อไปนี้
    • OPERATIONAL
    • CLOSED_TEMPORARILY
    • CLOSED_PERMANENTLY
    หากไม่มีข้อมูลอยู่ ระบบจะไม่แสดง business_status
  • formatted_address คือสตริงที่มีที่อยู่ที่มนุษย์อ่านได้ ของสถานที่นี้ ระบบจะแสดงพร็อพเพอร์ตี้ formatted_address สำหรับ Text Search เท่านั้น

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

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

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

  • geometry: ข้อมูลที่เกี่ยวข้องกับรูปทรงเรขาคณิตของสถานที่ ซึ่งรวมถึงข้อมูลต่อไปนี้
    • location จะแสดงละติจูดและลองจิจูดของ สถานที่
    • viewport กำหนดวิวพอร์ตที่ต้องการบนแผนที่เมื่อ ดูสถานที่นี้
  • permanently_closed (เลิกใช้งานแล้ว) เป็นแฟล็กบูลีนที่ระบุว่าสถานที่ปิดตัวลงอย่างถาวรหรือชั่วคราว (ค่า true) หรือไม่ อย่าใช้ permanently_closed แต่ให้ใช้ business_status เพื่อดูสถานะการดำเนินงานของธุรกิจ
  • plus_code (ดูOpen Location Code และ Plus Code) คือการอ้างอิงตำแหน่งที่เข้ารหัสซึ่งได้มาจากพิกัดละติจูดและลองจิจูด ซึ่งแสดงถึงพื้นที่ขนาด 1/8000 ขององศาต่อ 1/8000 ขององศา (ประมาณ 14 ม. x 14 ม. ที่เส้นศูนย์สูตร) หรือเล็กกว่า คุณใช้ Plus Codes แทน ที่อยู่ได้ในสถานที่ที่ไม่มีที่อยู่ (ไม่มีการกำหนดหมายเลขอ้างอิงอาคารหรือ ไม่มีการตั้งชื่อถนน)

    Plus Codes มีรูปแบบเป็นรหัสสากลและรหัสผสม ดังนี้

    • global_code คือรหัสพื้นที่ 4 หลักและรหัสท้องถิ่น 6 หลักขึ้นไป (849VCWC8+R9)
    • compound_code คือรหัสท้องถิ่น 6 หลักขึ้นไปที่มีการระบุตำแหน่งชัดเจน (CWC8+R9, Mountain View, CA, USA) อย่าแยกวิเคราะห์เนื้อหานี้โดยใช้โปรแกรม
    โดยปกติแล้ว ระบบจะแสดงผลทั้งรหัสสากลและรหัสรวม อย่างไรก็ตาม หากผลลัพธ์อยู่ใน สถานที่ตั้งระยะไกล (เช่น มหาสมุทรหรือทะเลทราย) ระบบอาจแสดงเฉพาะรหัสสากล
  • html_attributions: อาร์เรย์ของการระบุแหล่งที่มาที่คุณควร แสดงเมื่อแสดงผลการค้นหา แต่ละรายการในอาร์เรย์จะมี ข้อความ HTML สำหรับการระบุแหล่งที่มาเดียว หมายเหตุ: นี่คือ การรวบรวมการระบุแหล่งที่มาทั้งหมดสําหรับการตอบกลับการค้นหาทั้งหมด ดังนั้นออบเจ็กต์ PlaceResult ทั้งหมดในคำตอบจึงมี รายการการระบุแหล่งที่มาเหมือนกัน
  • icon จะแสดงผล URL สำหรับไอคอน PNG ขนาด 71x71 พิกเซลแบบมีสี
  • icon_mask_base_uri จะแสดงผล URL ฐานสำหรับไอคอนที่ไม่ใช่สี โดยไม่รวมนามสกุล .svg หรือ .png
  • icon_background_color จะแสดงรหัสสี HEX เริ่มต้นสำหรับ หมวดหมู่ของสถานที่
  • name: ชื่อสถานที่
  • opening_hours อาจมีข้อมูลต่อไปนี้
    • open_now คือค่าบูลีนที่ระบุว่าสถานที่เปิดอยู่หรือไม่ ในเวลาปัจจุบัน (เลิกใช้งานแล้ว ใน Places Library, Maps JavaScript API ให้ใช้ utc_offset_minutes แทน)
  • place_id คือตัวระบุข้อความที่ระบุสถานที่ที่ไม่ซ้ำกัน หากต้องการดึงข้อมูลเกี่ยวกับสถานที่ ให้ส่งตัวระบุนี้ใน คำขอรายละเอียดสถานที่ ดูข้อมูลเพิ่มเติมเกี่ยวกับวิธีอ้างอิงสถานที่ ด้วยรหัสสถานที่
  • rating มีคะแนนของสถานที่ตั้งแต่ 0.0 ถึง 5.0 โดยอิงตาม รีวิวของผู้ใช้ที่รวบรวมไว้
  • types อาร์เรย์ของ ประเภทสำหรับสถานที่นี้ (เช่น ["political", "locality"] หรือ ["restaurant", "lodging"]) อาร์เรย์นี้อาจมีค่าหลายค่าหรืออาจว่างเปล่า ก็ได้ เราอาจเปิดตัวค่าใหม่โดยไม่ต้องแจ้งให้ทราบล่วงหน้า ดูรายการ ประเภทที่รองรับ
  • vicinity: ที่อยู่ที่เรียบง่ายสำหรับสถานที่ ซึ่งรวมถึง ชื่อถนน หมายเลขถนน และสถานที่ตั้ง แต่ไม่รวม จังหวัด/รัฐ รหัสไปรษณีย์ หรือประเทศ เช่น สำนักงานของ Google ในซิดนีย์ ออสเตรเลีย มีvicinityค่าเป็น 5/48 Pirrama Road, Pyrmont

เข้าถึงผลลัพธ์เพิ่มเติม

โดยค่าเริ่มต้น การค้นหาสถานที่จะแสดงผลลัพธ์สูงสุด 20 รายการต่อคำค้นหา อย่างไรก็ตาม การค้นหาแต่ละครั้งอาจแสดงผลได้สูงสุด 60 รายการ โดยแบ่งออกเป็น 3 หน้า คุณดูหน้าเพิ่มเติมได้โดยใช้ออบเจ็กต์ PlaceSearchPagination หากต้องการเข้าถึงหน้าเพิ่มเติม คุณต้องบันทึกออบเจ็กต์ PlaceSearchPagination โดยใช้ฟังก์ชัน Callback ออบเจ็กต์ PlaceSearchPagination มีคำจำกัดความดังนี้

  • hasNextPage พร็อพเพอร์ตี้บูลีนที่ระบุว่ามีผลลัพธ์เพิ่มเติม หรือไม่ true เมื่อมีหน้าผลการค้นหาเพิ่มเติม
  • nextPage() ฟังก์ชันที่จะแสดงผลชุดผลลัพธ์ถัดไป หลังจากทำการค้นหาแล้ว คุณต้องรอ 2 วินาทีก่อนจึงจะดูผลการค้นหาในหน้าถัดไปได้

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

ตัวอย่างด้านล่างแสดงวิธีแก้ไขฟังก์ชัน Callback เพื่อ บันทึกออบเจ็กต์ PlaceSearchPagination เพื่อให้คุณส่งคำขอค้นหาหลายรายการได้

TypeScript

// This example requires the Places library. Include the libraries=places
// parameter when you first load the API. For example:
// <script src="https://maps.googleapis.com/maps/api/js?key=YOUR_API_KEY&libraries=places">

function initMap(): void {
  // Create the map.
  const pyrmont = { lat: -33.866, lng: 151.196 };
  const map = new google.maps.Map(
    document.getElementById("map") as HTMLElement,
    {
      center: pyrmont,
      zoom: 17,
      mapId: "8d193001f940fde3",
    } as google.maps.MapOptions
  );

  // Create the places service.
  const service = new google.maps.places.PlacesService(map);
  let getNextPage: () => void | false;
  const moreButton = document.getElementById("more") as HTMLButtonElement;

  moreButton.onclick = function () {
    moreButton.disabled = true;

    if (getNextPage) {
      getNextPage();
    }
  };

  // Perform a nearby search.
  service.nearbySearch(
    { location: pyrmont, radius: 500, type: "store" },
    (
      results: google.maps.places.PlaceResult[] | null,
      status: google.maps.places.PlacesServiceStatus,
      pagination: google.maps.places.PlaceSearchPagination | null
    ) => {
      if (status !== "OK" || !results) return;

      addPlaces(results, map);
      moreButton.disabled = !pagination || !pagination.hasNextPage;

      if (pagination && pagination.hasNextPage) {
        getNextPage = () => {
          // Note: nextPage will call the same handler function as the initial call
          pagination.nextPage();
        };
      }
    }
  );
}

function addPlaces(
  places: google.maps.places.PlaceResult[],
  map: google.maps.Map
) {
  const placesList = document.getElementById("places") as HTMLElement;

  for (const place of places) {
    if (place.geometry && place.geometry.location) {
      const image = {
        url: place.icon!,
        size: new google.maps.Size(71, 71),
        origin: new google.maps.Point(0, 0),
        anchor: new google.maps.Point(17, 34),
        scaledSize: new google.maps.Size(25, 25),
      };

      new google.maps.Marker({
        map,
        icon: image,
        title: place.name!,
        position: place.geometry.location,
      });

      const li = document.createElement("li");

      li.textContent = place.name!;
      placesList.appendChild(li);

      li.addEventListener("click", () => {
        map.setCenter(place.geometry!.location!);
      });
    }
  }
}

declare global {
  interface Window {
    initMap: () => void;
  }
}
window.initMap = initMap;

JavaScript

// This example requires the Places library. Include the libraries=places
// parameter when you first load the API. For example:
// <script src="https://maps.googleapis.com/maps/api/js?key=YOUR_API_KEY&libraries=places">
function initMap() {
  // Create the map.
  const pyrmont = { lat: -33.866, lng: 151.196 };
  const map = new google.maps.Map(document.getElementById("map"), {
    center: pyrmont,
    zoom: 17,
    mapId: "8d193001f940fde3",
  });
  // Create the places service.
  const service = new google.maps.places.PlacesService(map);
  let getNextPage;
  const moreButton = document.getElementById("more");

  moreButton.onclick = function () {
    moreButton.disabled = true;
    if (getNextPage) {
      getNextPage();
    }
  };

  // Perform a nearby search.
  service.nearbySearch(
    { location: pyrmont, radius: 500, type: "store" },
    (results, status, pagination) => {
      if (status !== "OK" || !results) return;

      addPlaces(results, map);
      moreButton.disabled = !pagination || !pagination.hasNextPage;
      if (pagination && pagination.hasNextPage) {
        getNextPage = () => {
          // Note: nextPage will call the same handler function as the initial call
          pagination.nextPage();
        };
      }
    },
  );
}

function addPlaces(places, map) {
  const placesList = document.getElementById("places");

  for (const place of places) {
    if (place.geometry && place.geometry.location) {
      const image = {
        url: place.icon,
        size: new google.maps.Size(71, 71),
        origin: new google.maps.Point(0, 0),
        anchor: new google.maps.Point(17, 34),
        scaledSize: new google.maps.Size(25, 25),
      };

      new google.maps.Marker({
        map,
        icon: image,
        title: place.name,
        position: place.geometry.location,
      });

      const li = document.createElement("li");

      li.textContent = place.name;
      placesList.appendChild(li);
      li.addEventListener("click", () => {
        map.setCenter(place.geometry.location);
      });
    }
  }
}

window.initMap = initMap;
ดูตัวอย่าง

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

รายละเอียดสถานที่

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

คำขอรายละเอียดสถานที่

ระบบจะขอรายละเอียดสถานที่ด้วยการเรียกใช้เมธอด getDetails() ของบริการ

service = new google.maps.places.PlacesService(map);
service.getDetails(request, callback);

เมธอดนี้รับคำขอที่มี placeId ของสถานที่ และฟิลด์ที่ระบุประเภทข้อมูลสถานที่ที่จะแสดงผล ดูข้อมูลเพิ่มเติมเกี่ยวกับ วิธีอ้างอิงสถานที่ด้วยรหัสสถานที่

นอกจากนี้ ยังใช้เมธอดเรียกกลับซึ่งต้องจัดการรหัสสถานะที่ส่งผ่าน ในการตอบกลับ google.maps.places.PlacesServiceStatus รวมถึงออบเจ็กต์ google.maps.places.PlaceResult

var request = {
  placeId: 'ChIJN1t_tDeuEmsRUsoyG83frY4',
  fields: ['name', 'rating', 'formatted_phone_number', 'geometry']
};

service = new google.maps.places.PlacesService(map);
service.getDetails(request, callback);

function callback(place, status) {
  if (status == google.maps.places.PlacesServiceStatus.OK) {
    createMarker(place);
  }
}

ดูตัวอย่าง

ฟิลด์ (รายละเอียดสถานที่)

พารามิเตอร์ fields จะใช้อาร์เรย์ของสตริง (ชื่อฟิลด์)

ใช้พารามิเตอร์ fields เพื่อระบุอาร์เรย์ของประเภทข้อมูลสถานที่ที่จะแสดงผล ตัวอย่างเช่น fields: ['address_components', 'opening_hours', 'geometry'] ใช้จุดเมื่อระบุค่าผสม ตัวอย่างเช่น opening_hours.weekday_text

ฟิลด์จะสอดคล้องกับผลลัพธ์รายละเอียดสถานที่ และแบ่งออกเป็น 3 หมวดหมู่การเรียกเก็บเงิน ได้แก่ พื้นฐาน ข้อมูลติดต่อ และ บรรยากาศ ระบบจะเรียกเก็บเงินสำหรับฟิลด์พื้นฐานตามอัตราฐานและไม่มีค่าใช้จ่ายเพิ่มเติม ระบบจะเรียกเก็บเงินสำหรับฟิลด์ "รายชื่อติดต่อ" และ "บรรยากาศ" ในอัตราที่สูงขึ้น ดูข้อมูลเพิ่มเติมได้ที่ตารางราคา ระบบจะแสดงการระบุแหล่งที่มา (html_attributions) ทุกครั้งที่มีการเรียกใช้ ไม่ว่าจะมีการขอหรือไม่ก็ตาม

พื้นฐาน

หมวดหมู่พื้นฐานประกอบด้วยฟิลด์ต่อไปนี้
address_components, adr_address, business_status, formatted_address, geometry, icon, icon_mask_base_uri, icon_background_color,name, permanently_closed (เลิกใช้งานแล้ว), photo, place_id, plus_code, type, url, utc_offset (เลิกใช้งานแล้ว ใน Places Library, Maps JavaScript API), utc_offset_minutes, vicinity

การติดต่อ

หมวดหมู่ "ติดต่อ" มีช่องต่อไปนี้
formatted_phone_number, international_phone_number, opening_hours, website

บรรยากาศ

หมวดหมู่บรรยากาศมีช่องต่อไปนี้ price_level, rating, reviews user_ratings_total

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

การตอบกลับรายละเอียดสถานที่

รหัสสถานะ

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

  • INVALID_REQUEST: คำขอนี้ไม่ถูกต้อง
  • OK: คำตอบมีผลลัพธ์ที่ถูกต้อง
  • OVER_QUERY_LIMIT: หน้าเว็บส่งคำขอเกินโควต้า แล้ว
  • NOT_FOUND ไม่พบสถานที่อ้างอิงในฐานข้อมูล Places
  • REQUEST_DENIED: หน้าเว็บไม่ได้รับอนุญาตให้ใช้ PlacesService
  • UNKNOWN_ERROR: ประมวลผลคำขอ PlacesService ไม่ได้ เนื่องจากเซิร์ฟเวอร์เกิดข้อผิดพลาด คำขออาจสำเร็จหากคุณลองอีกครั้ง
  • ZERO_RESULTS: ไม่พบผลลัพธ์สำหรับคำขอนี้

ผลการค้นหารายละเอียดสถานที่

การเรียกใช้ getDetails() ที่สำเร็จจะแสดงออบเจ็กต์ PlaceResult ที่มีพร็อพเพอร์ตี้ต่อไปนี้

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

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

    • types[] คืออาร์เรย์ที่ระบุประเภทของ คอมโพเนนต์ที่อยู่ ดูรายการ ประเภทที่รองรับ
    • long_name คือคำอธิบายข้อความแบบเต็มหรือชื่อของ คอมโพเนนต์ที่อยู่ตามที่ Geocoder แสดงผล
    • short_name คือชื่อข้อความแบบย่อสำหรับคอมโพเนนต์ที่อยู่ หากมี ตัวอย่างเช่น คอมโพเนนต์ที่อยู่สำหรับรัฐ อลาสก้าอาจมี long_name เป็น "Alaska" และ short_name เป็น "AK" โดยใช้ตัวย่อทางไปรษณีย์ 2 ตัวอักษร

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

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

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

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

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

  • formatted_phone_number: หมายเลขโทรศัพท์ของสถานที่ซึ่งจัดรูปแบบ ตาม รูปแบบหมายเลขโทรศัพท์ในภูมิภาค
  • geometry: ข้อมูลที่เกี่ยวข้องกับรูปทรงเรขาคณิตของสถานที่ ซึ่งรวมถึงข้อมูลต่อไปนี้
    • location จะแสดงละติจูดและลองจิจูดของ สถานที่
    • viewport กำหนดวิวพอร์ตที่ต้องการบนแผนที่เมื่อ ดูสถานที่นี้
  • permanently_closed (เลิกใช้งานแล้ว) เป็นแฟล็กบูลีนที่ระบุว่าสถานที่ปิดตัวลงอย่างถาวรหรือชั่วคราว (ค่า true) หรือไม่ อย่าใช้ permanently_closed แต่ให้ใช้ business_status เพื่อดูสถานะการดำเนินงานของธุรกิจ
  • plus_code (ดูOpen Location Code และ Plus Code) คือการอ้างอิงตำแหน่งที่เข้ารหัสซึ่งได้มาจากพิกัดละติจูดและลองจิจูด ซึ่งแสดงถึงพื้นที่ขนาด 1/8000 ขององศาต่อ 1/8000 ขององศา (ประมาณ 14 ม. x 14 ม. ที่เส้นศูนย์สูตร) หรือเล็กกว่า คุณใช้ Plus Codes แทน ที่อยู่ได้ในสถานที่ที่ไม่มีที่อยู่ (ไม่มีการกำหนดหมายเลขอ้างอิงอาคารหรือ ไม่มีการตั้งชื่อถนน)

    Plus Codes มีรูปแบบเป็นรหัสสากลและรหัสผสม ดังนี้

    • global_code คือรหัสพื้นที่ 4 หลักและรหัสท้องถิ่น 6 หลักขึ้นไป (849VCWC8+R9)
    • compound_code คือรหัสท้องถิ่น 6 หลักขึ้นไปที่มีการระบุตำแหน่งชัดเจน (CWC8+R9, Mountain View, CA, USA) อย่าแยกวิเคราะห์เนื้อหานี้โดยใช้โปรแกรม
    โดยปกติแล้ว ระบบจะแสดงผลทั้งรหัสสากลและรหัสรวม อย่างไรก็ตาม หากผลลัพธ์อยู่ใน สถานที่ตั้งระยะไกล (เช่น มหาสมุทรหรือทะเลทราย) ระบบอาจแสดงเฉพาะรหัสสากล
  • html_attributions: ข้อความระบุแหล่งที่มาที่จะแสดงสำหรับ ผลการค้นหาสถานที่นี้
  • icon: URL ไปยังแหล่งข้อมูลรูปภาพที่ใช้เพื่อ แสดงประเภทของสถานที่นี้ได้
  • international_phone_number มีหมายเลขโทรศัพท์ของสถานที่ ในรูปแบบระหว่างประเทศ รูปแบบระหว่างประเทศประกอบด้วยรหัสประเทศ และมีคำนำหน้าเป็นเครื่องหมายบวก (+) เช่น รหัสไปรษณีย์ของ international_phone_number สำนักงาน Google ในซิดนีย์ ออสเตรเลีย คือ +61 2 9374 4000
  • name: ชื่อสถานที่
  • utc_offset เลิกใช้งานแล้ว ใน Places Library, Maps JavaScript API ให้ใช้ utc_offset_minutes แทน
  • utc_offset_minutes มีจำนวนนาทีที่เขตเวลาปัจจุบันของสถานที่นี้ ช้ากว่าหรือเร็วกว่า UTC ตัวอย่างเช่น สำหรับสถานที่ใน ซิดนีย์ ออสเตรเลีย ในช่วงเวลาออมแสง ค่านี้จะเป็น 660 (+11 ชั่วโมง จาก UTC) และสำหรับสถานที่ในแคลิฟอร์เนียที่อยู่นอกช่วงเวลาออมแสง ค่านี้จะเป็น -480 (-8 ชั่วโมงจาก UTC)
  • opening_hours มีข้อมูลต่อไปนี้
    • open_now (เลิกใช้งานแล้ว ใน Places Library, Maps JavaScript API; ใช้ opening_hours.isOpen() แทน ดูวิธีใช้ isOpen กับรายละเอียดสถานที่ได้ใน วิดีโอวิธีดูเวลาทําการใน Places API) `open_now` คือค่าบูลีนที่ระบุว่าสถานที่เปิดทําการในเวลาปัจจุบันหรือไม่
    • periods[] คืออาร์เรย์ของช่วงเวลาเปิดทำการที่ครอบคลุม 7 วัน โดยเริ่มจากวันอาทิตย์ตามลำดับเวลา แต่ละช่วงเวลา จะมีข้อมูลต่อไปนี้
      • open มีออบเจ็กต์วันที่และเวลา 2 รายการ ที่อธิบายเวลาเปิดทำการของสถานที่
        • day ตัวเลขตั้งแต่ 0-6 ซึ่งสอดคล้องกับวัน ของสัปดาห์ โดยเริ่มตั้งแต่วันอาทิตย์ เช่น 2 หมายถึง วันอังคาร
        • time อาจมีเวลาของวันในรูปแบบ hhmm แบบ 24 ชั่วโมง (ค่าอยู่ในช่วง 0000–2359) time จะรายงานในเขตเวลาของสถานที่
      • close อาจมีออบเจ็กต์คู่ของวันและเวลา ที่อธิบายเวลาปิดของสถานที่ หมายเหตุ:หากสถานที่เปิดตลอดเวลา ส่วนcloseจะหายไปจากคำตอบ แอปพลิเคชันสามารถใช้การระบุว่าเปิดตลอดเวลา เป็นopen ช่วงเวลาที่มี day ที่มีค่า 0 และ time ที่มีค่า 0000 และไม่มี close
    • weekday_text คืออาร์เรย์ของสตริง 7 รายการที่แสดง เวลาทำการที่จัดรูปแบบแล้วสำหรับแต่ละวันในสัปดาห์ หากมีการระบุพารามิเตอร์ language ในคำขอรายละเอียดสถานที่ บริการ Places จะจัดรูปแบบและแปลเวลาทำการ ให้เหมาะสมกับภาษานั้น ลำดับขององค์ประกอบในอาร์เรย์นี้ขึ้นอยู่กับพารามิเตอร์ language บางภาษา เริ่มต้นสัปดาห์ในวันจันทร์ ขณะที่บางภาษาเริ่มต้นในวันอาทิตย์
  • permanently_closed (เลิกใช้งานแล้ว) เป็นค่าสถานะบูลีนที่ระบุว่าสถานที่ปิดตัวลงอย่างถาวรหรือ ชั่วคราว (ค่า true) โปรดอย่าใช้ permanently_closed แต่ให้ใช้ business_status เพื่อดูสถานะการดำเนินงานของธุรกิจ
  • photos[]: อาร์เรย์ของออบเจ็กต์ PlacePhoto คุณใช้ PlacePhoto เพื่อรับรูปภาพด้วยเมธอด getUrl() หรือตรวจสอบออบเจ็กต์เพื่อดูค่าต่อไปนี้ได้
    • height: ความสูงสูงสุดของรูปภาพในหน่วยพิกเซล
    • width: ความกว้างสูงสุดของรูปภาพในหน่วยพิกเซล
    • html_attributions: ข้อความระบุแหล่งที่มาที่จะแสดง พร้อมกับรูปภาพสถานที่นี้
  • place_id: ตัวระบุข้อความที่ระบุค่าเฉพาะของสถานที่ และใช้เพื่อดึงข้อมูลเกี่ยวกับสถานที่โดยใช้ คำขอรายละเอียดสถานที่ ดูข้อมูลเพิ่มเติมเกี่ยวกับวิธีอ้างอิงสถานที่ ด้วยรหัสสถานที่
  • rating: คะแนนของสถานที่ตั้งแต่ 0.0 ถึง 5.0 โดยอิงตาม รีวิวแบบรวมจากผู้ใช้
  • reviews อาร์เรย์ของรีวิวสูงสุด 5 รายการ รีวิวแต่ละรายการ ประกอบด้วยองค์ประกอบหลายอย่าง ดังนี้
    • aspects[] มีอาร์เรย์ของออบเจ็กต์ PlaceAspectRating ซึ่งแต่ละออบเจ็กต์จะให้คะแนนของแอตทริบิวต์เดียวของสถานประกอบการ ออบเจ็กต์แรก ในอาร์เรย์จะถือเป็นแง่มุมหลัก PlaceAspectRating แต่ละรายการมีคำจำกัดความดังนี้
      • type ชื่อของแง่มุมที่มีการให้คะแนน ระบบรองรับประเภทต่อไปนี้ appeal, atmosphere, decor, facilities, food, overall, quality และ service
      • rating คะแนนของผู้ใช้สำหรับ แง่มุมนี้โดยเฉพาะ ตั้งแต่ 0 ถึง 3
    • author_name ชื่อของผู้ใช้ที่ส่งรีวิว รีวิวที่ไม่ระบุชื่อจะระบุแหล่งที่มาเป็น "ผู้ใช้ Google" หากตั้งค่าพารามิเตอร์ภาษาไว้ คำว่า "ผู้ใช้ Google" จะแสดงสตริงที่แปลแล้ว
    • author_url URL ของโปรไฟล์ Google+ ของผู้ใช้ หากมี
    • language รหัสภาษา IETF ที่ระบุภาษา ที่ใช้ในรีวิวของผู้ใช้ ฟิลด์นี้มีแท็กภาษาหลัก เท่านั้น และไม่มีแท็กรองที่ระบุประเทศหรือภูมิภาค เช่น รีวิวภาษาอังกฤษทั้งหมดจะได้รับการติดแท็กเป็น "en" ไม่ใช่ "en-AU" หรือ "en-UK"
    • rating คะแนนโดยรวมของผู้ใช้สำหรับสถานที่นี้ ซึ่งเป็นจำนวนเต็มตั้งแต่ 1 ถึง 5
    • text รีวิวของผู้ใช้ เมื่อรีวิว สถานที่ด้วย Google Places ระบบจะถือว่ารีวิวข้อความเป็นตัวเลือก ดังนั้นฟิลด์นี้จึงอาจว่างเปล่า
  • types อาร์เรย์ของ ประเภทสำหรับสถานที่นี้ (เช่น ["political", "locality"] หรือ ["restaurant", "lodging"]) อาร์เรย์นี้อาจมีค่าหลายค่าหรืออาจว่างเปล่า ก็ได้ เราอาจเปิดตัวค่าใหม่โดยไม่ต้องแจ้งให้ทราบล่วงหน้า ดูรายการ ประเภทที่รองรับ
  • url: URL ของหน้า Google อย่างเป็นทางการสำหรับสถานที่นี้ นี่คือหน้าที่ Google เป็นเจ้าของซึ่งมีข้อมูลที่ดีที่สุด เกี่ยวกับสถานที่นั้นๆ แอปพลิเคชันต้องลิงก์ไปยังหรือฝัง หน้านี้ในหน้าจอที่แสดงผลลัพธ์โดยละเอียดเกี่ยวกับสถานที่แก่ผู้ใช้
  • vicinity: ที่อยู่ที่เรียบง่ายสำหรับสถานที่ ซึ่งรวมถึง ชื่อถนน หมายเลขถนน และสถานที่ตั้ง แต่ไม่รวม จังหวัด/รัฐ รหัสไปรษณีย์ หรือประเทศ เช่น สำนักงานของ Google ในซิดนีย์ ออสเตรเลีย มีvicinityค่าเป็น 5/48 Pirrama Road, Pyrmont ระบบจะแสดงพร็อพเพอร์ตี้ vicinity สำหรับการค้นหาใกล้เคียงเท่านั้น
  • website แสดงเว็บไซต์ที่เชื่อถือได้ของสถานที่นี้ เช่น หน้าแรกของธุรกิจ

หมายเหตุ: คะแนนหลายมิติอาจไม่พร้อมใช้งานในบางสถานที่ หากมีรีวิวน้อยเกินไป การตอบกลับแบบละเอียดจะ แสดงคะแนนเดิมในมาตราส่วน 0.0 ถึง 5.0 (หากมี) หรือไม่แสดง คะแนนเลย

อ้างอิงสถานที่ด้วยรหัสสถานที่

รหัสสถานที่เป็นข้อมูลอ้างอิงที่ไม่ซ้ำกันสำหรับสถานที่ใน Google Maps รหัสสถานที่ มีให้บริการสำหรับสถานที่ส่วนใหญ่ ซึ่งรวมถึงธุรกิจ สถานที่สำคัญ สวนสาธารณะ และสี่แยก

หากต้องการใช้รหัสสถานที่ในแอป คุณต้องค้นหารหัสก่อน ซึ่งรหัสจะ อยู่ใน PlaceResult ของคำขอ Place Search หรือคำขอรายละเอียด จากนั้นคุณจะใช้รหัสสถานที่นี้เพื่อค้นหา รายละเอียด สถานที่ได้

รหัสสถานที่จะได้รับการยกเว้นจากข้อจำกัดในการแคชที่ระบุไว้ ในส่วน 3.2.3(b) ของ ข้อกำหนดในการให้บริการของ Google Maps Platform ดังนั้นคุณจึงจัดเก็บค่ารหัสสถานที่เพื่อใช้ในภายหลังได้ ดูแนวทางปฏิบัติแนะนำในการจัดเก็บ Place ID ได้ที่ภาพรวมของ Place ID

var map;

function initialize() {
  // Create a map centered in Pyrmont, Sydney (Australia).
  map = new google.maps.Map(document.getElementById('map'), {
    center: {lat: -33.8666, lng: 151.1958},
    zoom: 15
  });

  // Search for Google's office in Australia.
  var request = {
    location: map.getCenter(),
    radius: '500',
    query: 'Google Sydney'
  };

  var service = new google.maps.places.PlacesService(map);
  service.textSearch(request, callback);
}

// Checks that the PlacesServiceStatus is OK, and adds a marker
// using the place ID and location from the PlacesService.
function callback(results, status) {
  if (status == google.maps.places.PlacesServiceStatus.OK) {
    var marker = new google.maps.Marker({
      map: map,
      place: {
        placeId: results[0].place_id,
        location: results[0].geometry.location
      }
    });
  }
}

google.maps.event.addDomListener(window, 'load', initialize);

รูปภาพสถานที่

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

ระบบจะแสดงผลอาร์เรย์ของออบเจ็กต์ PlacePhoto เป็นส่วนหนึ่งของออบเจ็กต์ PlaceResult สำหรับคำขอ getDetails(), textSearch() หรือ nearbySearch() ที่ทำกับ PlacesService

หมายเหตุ: จำนวนรูปภาพที่แสดงจะแตกต่างกันไปตามคำขอ

  • การค้นหาใกล้เคียงหรือการค้นหาข้อความจะแสดงออบเจ็กต์ PlacePhoto อย่างน้อย 1 รายการ
  • คำขอรายละเอียดจะแสดงออบเจ็กต์ PlacePhoto สูงสุด 10 รายการ

คุณขอ URL ของรูปภาพที่เชื่อมโยงได้โดยการเรียกใช้เมธอด PlacePhoto.getUrl() และส่งออบเจ็กต์ PhotoOptions ที่ถูกต้อง ใช้ออบเจ็กต์ PhotoOptions เพื่อระบุความสูงและความกว้างสูงสุดของรูปภาพ หากคุณ ระบุค่าสำหรับทั้ง maxHeight และ maxWidth บริการรูปภาพจะปรับขนาดรูปภาพให้มีขนาดเล็กกว่าใน 2 ขนาดนี้ พร้อมทั้งรักษาสัดส่วนภาพเดิมไว้

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

function createPhotoMarker(place) {
  var photos = place.photos;
  if (!photos) {
    return;
  }

  var marker = new google.maps.Marker({
    map: map,
    position: place.geometry.location,
    title: place.name,
    icon: photos[0].getUrl({maxWidth: 35, maxHeight: 35})
  });
}

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