ห้องสมุดของ 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 Console
  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 ของ Bootstrap ของ Maps API ก่อน:

<script async
    src="https://maps.googleapis.com/maps/api/js?key=YOUR_API_KEY&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 ใดในรายการ คุณจะต้องenable API)
  6. คลิกบันทึก

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

โควต้า

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

นโยบาย

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

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

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

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

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

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

ค้นหาสถานที่จากข้อความค้นหา

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

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

คุณต้องส่งเมธอดโค้ดเรียกกลับไปยัง 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 จุด หรือวัตถุละติจูด/ลองจิจูด)
    • รัศมี (หน่วยเป็นเมตร) ตรงกลางของละติจูด/ลองจิจูด

คุณต้องส่งเมธอดโค้ดเรียกกลับไปยัง 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 Library, 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}}

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

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

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

    • 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, , JavaScript/th} (, JavaScript/19utc_offsetutc_offset_minutesvicinity

การติดต่อ

หมวดหมู่รายชื่อติดต่อประกอบด้วยช่องต่อไปนี้
formatted_phone_number, international_phone_number, opening_hours, website

บรรยากาศ

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

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

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

รหัสสถานะ

ออบเจ็กต์การตอบกลับ 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 จะมีการจัดรูปแบบเป็นโค้ดส่วนกลางและโค้ดแบบผสม ดังนี้

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

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