Places Library

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

ภาพรวม

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

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

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

หากคุณไม่คุ้นเคยกับ Maps JavaScript API หรือ 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
  2. คลิกเมนูแบบเลื่อนลงของโปรเจ็กต์ แล้วเลือกโปรเจ็กต์ที่มีคีย์ API ที่ต้องการรักษาความปลอดภัย
  3. คลิกปุ่มเมนู แล้วเลือก Google Maps Platform > ข้อมูลเข้าสู่ระบบ
  4. ในหน้าข้อมูลเข้าสู่ระบบ ให้คลิกชื่อคีย์ API ที่ต้องการรักษาความปลอดภัย
  5. ในหน้าจำกัดและเปลี่ยนชื่อคีย์ API ให้ตั้งค่าข้อจำกัดดังนี้
    • ข้อจำกัด API
      • เลือกจำกัดคีย์
      • คลิกเลือก API แล้วเลือกทั้ง Maps JavaScript API และ Places API (เดิม)
        (หากไม่เห็น API ใด API หนึ่งในรายการ คุณต้องเปิดใช้ API นั้น)
  6. คลิกบันทึก

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

โควต้า

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

นโยบาย

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

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

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

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

คำขอค้นหาสถานที่ (เดิม)

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

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

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

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

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

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

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

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

ฟิลด์ (เมธอด Find Place)

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

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

Basic

หมวดหมู่พื้นฐานประกอบด้วยช่องต่อไปนี้
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() ต่างก็ใช้ชุดช่องเดียวกัน และสามารถแสดงผลช่องเดียวกันในการตอบกลับที่เกี่ยวข้องได้

ตั้งค่าการให้น้ำหนักสถานที่ (เมธอด Find Place)

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

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

    ที่อยู่ที่มีการจัดรูปแบบจะประกอบด้วยคอมโพเนนต์ที่อยู่อย่างน้อย 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 (ดูรหัสตำแหน่งแบบเปิดและ Plus Codes) คือข้อมูลอ้างอิงตำแหน่งที่เข้ารหัสซึ่งได้มาจากพิกัดละติจูดและลองจิจูดที่แสดงพื้นที่: 1/8000 ขององศา คูณ 1/8000 ขององศา (ประมาณ 14 ม. x 14 ม. ที่เส้นศูนย์สูตร) หรือเล็กกว่านั้น Plus Codes สามารถใช้แทนที่อยู่บนถนนในสถานที่ที่ไม่มีที่อยู่ (ที่อาคารไม่มีหมายเลขหรือถนนไม่มีชื่อ)

    Plus Code จะอยู่ในรูปแบบรหัสสากลและรหัสผสม ดังนี้

    • global_code คือรหัสพื้นที่ 4 หลักและรหัสท้องถิ่น 6 หลักขึ้นไป (849VCWC8+R9)
    • compound_code คือรหัสท้องถิ่น 6 หลักขึ้นไปที่มีการระบุตำแหน่งชัดเจน (CWC8+R9, Mountain View, CA, USA) อย่าแยกวิเคราะห์เนื้อหานี้แบบเป็นโปรแกรม
    โดยปกติแล้ว ระบบจะแสดงผลทั้งรหัสสากลและรหัสผสม อย่างไรก็ตาม หากผลลัพธ์อยู่ในสถานที่ห่างไกล (เช่น มหาสมุทรหรือทะเลทราย) ระบบอาจแสดงเฉพาะรหัสสากล
  • html_attributions: อาร์เรย์ของการระบุแหล่งที่มาที่คุณควรแสดงเมื่อแสดงผลการค้นหา แต่ละรายการในอาร์เรย์จะมีข้อความ HTML สำหรับการระบุแหล่งที่มาเดียว หมายเหตุ: นี่คือการรวมการระบุแหล่งที่มาทั้งหมดสำหรับการตอบกลับการค้นหาทั้งหมด ดังนั้นออบเจ็กต์ PlaceResult ทั้งหมดในการตอบกลับจึงมีรายการการระบุแหล่งที่มาที่เหมือนกัน
  • icon แสดงผล URL สำหรับไอคอน PNG สีขนาด 71 x 71 พิกเซล
  • icon_mask_base_uri แสดงผล URL ฐานสำหรับไอคอนที่ไม่มีสี โดยไม่มีนามสกุล .svg หรือ .png
  • icon_background_color แสดงรหัสสีแบบเลขฐาน 16 เริ่มต้นสำหรับหมวดหมู่ของสถานที่
  • 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 ของสถานที่ และฟิลด์ที่ระบุประเภทข้อมูล Places ที่จะแสดงผล ดูข้อมูลเพิ่มเติมเกี่ยวกับวิธีอ้างอิงสถานที่ด้วยรหัสสถานที่

นอกจากนี้ยังใช้เมธอด Callback ซึ่งต้องจัดการรหัสสถานะที่ส่งมาในการตอบกลับ 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) พร้อมกับการเรียกใช้ทุกครั้งเสมอ ไม่ว่าจะมีการขอหรือไม่ก็ตาม

Basic

หมวดหมู่พื้นฐานประกอบด้วยช่องต่อไปนี้
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[] คืออาร์เรย์ที่ระบุประเภทขององค์ประกอบที่อยู่ องค์ประกอบที่อยู่อาจมีอาร์เรย์ประเภทที่ว่างเปล่าเมื่อไม่มีประเภทที่รู้จักสำหรับองค์ประกอบที่อยู่นั้น API อาจเพิ่มค่าประเภทใหม่ตามความจำเป็น ดูข้อมูลเพิ่มเติมได้ที่ประเภทที่อยู่และประเภทองค์ประกอบที่อยู่
    • long_name คือคำอธิบายข้อความแบบเต็มหรือชื่อของคอมโพเนนต์ที่อยู่ตามที่โปรแกรมเข้ารหัสพิกัดภูมิศาสตร์แสดงผล
    • 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 (ดูรหัสตำแหน่งแบบเปิดและ Plus Codes) คือการอ้างอิงตำแหน่งที่เข้ารหัสซึ่งได้มาจากพิกัดละติจูดและลองจิจูดที่แสดงพื้นที่: 1/8, 000 ขององศาต่อ 1/8, 000 ขององศา (ประมาณ 14 ม. x 14 ม. ที่เส้นศูนย์สูตร) หรือเล็กกว่านั้น Plus Codes สามารถใช้แทนที่อยู่บนถนนในสถานที่ที่ไม่มีที่อยู่ (ที่อาคารไม่มีหมายเลขหรือถนนไม่มีชื่อ)

    Plus Code จะอยู่ในรูปแบบรหัสสากลและรหัสผสม ดังนี้

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

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

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);

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

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

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