ห้องสมุดของ Places

เลือกแพลตฟอร์ม: Android iOS JavaScript บริการบนเว็บ

ภาพรวม

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

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

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

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

เปิดใช้ API

ก่อนที่จะใช้ไลบรารี Places ใน Maps JavaScript API ก่อนอื่นให้เปิดใช้ Places API ใน Google Cloud Console ในโปรเจ็กต์เดียวกันกับที่คุณตั้งค่าสำหรับ Maps JavaScript API

วิธีดูรายการ API ที่เปิดใช้

  1. ไปที่คอนโซล Google Cloud
  2. คลิกปุ่มเลือกโปรเจ็กต์ จากนั้นเลือกโปรเจ็กต์เดียวกับที่คุณตั้งค่าสำหรับ Maps JavaScript API แล้วคลิกเปิด
  3. จากรายการ API ในหน้าแดชบอร์ด ให้มองหา Places API
  4. หากเห็น Places API ในรายการ แสดงว่าเปิดใช้งานอยู่แล้ว หาก ไม่ แสดง API ในรายการ ให้เปิดใช้โดยทำดังนี้
    1. ที่ด้านบนของหน้า ให้เลือกเปิดใช้ API และบริการเพื่อแสดงแท็บไลบรารี หรือเลือกคลังจากเมนูด้านซ้าย
    2. ค้นหา Places API แล้วเลือกจากรายการผลลัพธ์
    3. เลือกเปิดใช้ เมื่อขั้นตอนเสร็จสิ้นแล้ว Places API จะปรากฏในรายการ API ในหน้าแดชบอร์ด

กำลังโหลดคลัง

บริการ Places เป็นไลบรารีที่มีในตัว และแยกจากโค้ด JavaScript API หลักของ Maps หากต้องการใช้ฟังก์ชันที่มีอยู่ภายในไลบรารีนี้ คุณต้องโหลดฟังก์ชันโดยใช้พารามิเตอร์ 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 รายการใดในรายการ คุณต้องenable API)
  6. คลิกบันทึก

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

โควต้า

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

นโยบาย

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

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

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

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

ค้นหาคำขอสถานที่

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

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

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

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

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

ตัวอย่างต่อไปนี้แสดงการเรียก findPlaceFromQuery() และค้นหา "พิพิธภัณฑ์ศิลปะร่วมสมัยออสเตรเลีย" รวมถึงช่อง 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)
    • รัศมี (หน่วยเป็นเมตร) ที่มีศูนย์กลางอยู่ที่ละติจูด/ลองจิจูด

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

ช่อง (ดูวิธีการเกี่ยวกับสถานที่)

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

ช่องต่างๆ จะสอดคล้องกับผลการค้นหาสถานที่ และแบ่งออกเป็น 3 หมวดหมู่การเรียกเก็บเงิน ได้แก่ พื้นฐาน รายชื่อติดต่อ และบรรยากาศ ช่องพื้นฐานจะมีการเรียกเก็บเงินในอัตราฐานและไม่มีค่าใช้จ่ายเพิ่มเติม ฟิลด์รายชื่อติดต่อและชั้นบรรยากาศ จะมีการเรียกเก็บเงินในอัตราที่สูงกว่า ดูข้อมูลเพิ่มเติมในชีตการกำหนดราคา การระบุแหล่งที่มา (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, Maps JavaScript API ใช้คำขอรายละเอียดสถานที่เพื่อรับผลลัพธ์ opening_hours รายการ)

บรรยากาศ

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

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

ตั้งค่าความเอนเอียงของตำแหน่ง (ค้นหาเมธอด 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}}

คำขอการค้นหาที่อยู่ใกล้เคียง

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

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

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

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

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

  • ข้อใดข้อหนึ่งต่อไปนี้
    • bounds ซึ่งต้องเป็นออบเจ็กต์ google.maps.LatLngBounds ที่กำหนดพื้นที่ค้นหาสี่เหลี่ยมผืนผ้า หรือ
    • 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 ประเภท ระบบจะไม่สนใจทุกประเภทที่ตามหลังรายการแรก) ดูรายการประเภทที่รองรับ

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

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

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

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

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

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

    Plus Code จะมีการจัดรูปแบบเป็นโค้ดส่วนกลางและโค้ดแบบผสม

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

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

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

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

นอกจากนี้ยังต้องใช้เมธอดโค้ดเรียกกลับ ซึ่งต้องจัดการรหัสสถานะที่ส่งผ่านในการตอบสนอง 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 Maps/API, {19/de}, utc_offsetutc_offset_minutesvicinity

การติดต่อ

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

    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, Maps JavaScript API; ใช้ opening_hours.isOpen() แทน ดูวิธีใช้ isOpen กับรายละเอียดสถานที่ได้จากวิดีโอนี้) เป็นค่าบูลีนที่ระบุว่าสถานที่นี้เปิดในเวลาปัจจุบันหรือไม่
    • periods[] เป็นอาร์เรย์ของช่วงเวลาเปิดที่ครอบคลุม 7 วัน โดยเริ่มจากวันอาทิตย์ตามลำดับเวลา แต่ละช่วงเวลาจะมีข้อมูลต่อไปนี้
      • open มีคู่ของออบเจ็กต์วันและเวลาที่อธิบายว่าสถานที่เปิดเมื่อใด
        • day ตัวเลขตั้งแต่ 0–6 ตามวันของสัปดาห์ โดยเริ่มตั้งแต่วันอาทิตย์ เช่น 2 หมายถึงวันอังคาร
        • time อาจมีเวลาของวันในรูปแบบ hhmm แบบ 24 ชั่วโมง (ค่าจะอยู่ในช่วง 0,000–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);

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

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