การค้นหาข้อความ (ใหม่) จะใช้ข้อความค้นหาและแสดงรายการข้อความที่ตรงกัน สถานที่
การค้นหาข้อความ (ใหม่) จะแสดงข้อมูลเกี่ยวกับชุดของ สถานที่ตามสตริง เช่น "พิซซ่าในกรุงเทพ" หรือ "ร้านรองเท้าใกล้อตตาวา" หรือ "123 Main Street" บริการจะตอบกลับด้วยรายการตำแหน่งที่ตรงกับสตริงข้อความและ ความเอนเอียงของตำแหน่งที่ตั้งไว้แล้ว การค้นหาข้อความ (ใหม่) ช่วยให้คุณค้นหา สถานที่ตามประเภท กรองตามเกณฑ์ เช่น เวลาทำการและคะแนน และจำกัดหรือให้น้ำหนักพิเศษ ผลลัพธ์ไปยังสถานที่ที่ต้องการ
หากต้องการใช้การค้นหาข้อความ (ใหม่) คุณต้องเปิดใช้งาน "Places API (ใหม่)" ใน โปรเจ็กต์ Google Cloud โปรดดูหัวข้อเริ่มต้นใช้งาน เพื่อดูรายละเอียด
ค้นหาสถานที่ด้วยการค้นหาด้วยข้อความ
โทร searchByText
เพื่อแสดงรายชื่อสถานที่จากข้อความค้นหาหรือหมายเลขโทรศัพท์
ระบุพารามิเตอร์การค้นหาโดยใช้คำขอ แล้วเรียก searchByText
ผลลัพธ์คือ
แสดงผลเป็นรายการ Place
ออบเจ็กต์ ซึ่งคุณจะได้รับ
รายละเอียดสถานที่
ข้อมูลโค้ดต่อไปนี้แสดงตัวอย่างคำขอและการโทรไปยัง searchByText
TypeScript
const request = { textQuery: 'Tacos in Mountain View', fields: ['displayName', 'location', 'businessStatus'], includedType: 'restaurant', locationBias: { lat: 37.4161493, lng: -122.0812166 }, isOpenNow: true, language: 'en-US', maxResultCount: 8, minRating: 3.2, region: 'us', useStrictTypeFiltering: false, }; //@ts-ignore const { places } = await Place.searchByText(request);
JavaScript
const request = { textQuery: "Tacos in Mountain View", fields: ["displayName", "location", "businessStatus"], includedType: "restaurant", locationBias: { lat: 37.4161493, lng: -122.0812166 }, isOpenNow: true, language: "en-US", maxResultCount: 8, minRating: 3.2, region: "us", useStrictTypeFiltering: false, }; //@ts-ignore const { places } = await Place.searchByText(request);
- ระบุการค้นหาข้อความหรือหมายเลขโทรศัพท์ที่จะค้นหาด้วยพารามิเตอร์
textQuery
- ใช้พารามิเตอร์
fields
(ต้องระบุ) เพื่อระบุรายการที่คั่นด้วยจุลภาคของ ฟิลด์ข้อมูลเพิ่มเติมที่มีอูฐ - ใช้พารามิเตอร์
includedType
เพื่อแสดงเฉพาะผลลัพธ์ของประเภทที่ระบุ - ใช้
locationBias
หรือlocationRestriction
เพื่อมีความลำเอียงหรือจำกัด ผลการค้นหาข้อความไปยังภูมิภาคที่ต้องการ
หากข้อความค้นหามีหมายเลขโทรศัพท์ ควรตั้งค่าพารามิเตอร์ภูมิภาค ตัวอย่างเช่น หากคุณ
ใช้หมายเลขโทรศัพท์เพื่อค้นหาสถานที่ในญี่ปุ่น และโดเมนที่ส่งคำขอคือ jp
คุณต้องตั้งค่าพารามิเตอร์ region
เป็น "jp" หากละเว้น region
จาก
API จะมีค่าเริ่มต้นเป็นภูมิภาคสหรัฐอเมริกา ("us")
Place
ซึ่งคุณจะได้รับ
รายละเอียดสถานที่
ตัวอย่าง
ตัวอย่างต่อไปนี้ใช้ searchByText
ในการค้นหาร้านทาโก้ใน
เขตเมาน์เทนวิว และแสดงแผนที่พร้อมเครื่องหมายเพื่อแสดงผลลัพธ์
TypeScript
let map; let center; async function initMap() { const { Map } = await google.maps.importLibrary("maps") as google.maps.MapsLibrary; center = { lat: 37.4161493, lng: -122.0812166 }; map = new Map(document.getElementById('map') as HTMLElement, { center: center, zoom: 11, mapId: 'DEMO_MAP_ID', }); findPlaces(); } async function findPlaces() { const { Place } = await google.maps.importLibrary("places") as google.maps.PlacesLibrary; const { AdvancedMarkerElement } = await google.maps.importLibrary("marker") as google.maps.MarkerLibrary; const request = { textQuery: 'Tacos in Mountain View', fields: ['displayName', 'location', 'businessStatus'], includedType: 'restaurant', locationBias: { lat: 37.4161493, lng: -122.0812166 }, isOpenNow: true, language: 'en-US', maxResultCount: 8, minRating: 3.2, region: 'us', useStrictTypeFiltering: false, }; //@ts-ignore const { places } = await Place.searchByText(request); if (places.length) { console.log(places); const { LatLngBounds } = await google.maps.importLibrary("core") as google.maps.CoreLibrary; const bounds = new LatLngBounds(); // Loop through and get all the results. places.forEach((place) => { const markerView = new AdvancedMarkerElement({ map, position: place.location, title: place.displayName, }); bounds.extend(place.location as google.maps.LatLng); console.log(place); }); map.fitBounds(bounds); } else { console.log('No results'); } } initMap();
JavaScript
let map; let center; async function initMap() { const { Map } = await google.maps.importLibrary("maps"); center = { lat: 37.4161493, lng: -122.0812166 }; map = new Map(document.getElementById("map"), { center: center, zoom: 11, mapId: "DEMO_MAP_ID", }); findPlaces(); } async function findPlaces() { const { Place } = await google.maps.importLibrary("places"); const { AdvancedMarkerElement } = await google.maps.importLibrary("marker"); const request = { textQuery: "Tacos in Mountain View", fields: ["displayName", "location", "businessStatus"], includedType: "restaurant", locationBias: { lat: 37.4161493, lng: -122.0812166 }, isOpenNow: true, language: "en-US", maxResultCount: 8, minRating: 3.2, region: "us", useStrictTypeFiltering: false, }; //@ts-ignore const { places } = await Place.searchByText(request); if (places.length) { console.log(places); const { LatLngBounds } = await google.maps.importLibrary("core"); const bounds = new LatLngBounds(); // Loop through and get all the results. places.forEach((place) => { const markerView = new AdvancedMarkerElement({ map, position: place.location, title: place.displayName, }); bounds.extend(place.location); console.log(place); }); map.fitBounds(bounds); } else { console.log("No results"); } } initMap();
CSS
/* * Always set the map height explicitly to define the size of the div element * that contains the map. */ #map { height: 100%; } /* * Optional: Makes the sample page fill the window. */ html, body { height: 100%; margin: 0; padding: 0; }
HTML
<html> <head> <title>Text Search</title> <link rel="stylesheet" type="text/css" href="./style.css" /> <script type="module" src="./index.js"></script> </head> <body> <div id="map"></div> <!-- prettier-ignore --> <script>(g=>{var h,a,k,p="The Google Maps JavaScript API",c="google",l="importLibrary",q="__ib__",m=document,b=window;b=b[c]||(b[c]={});var d=b.maps||(b.maps={}),r=new Set,e=new URLSearchParams,u=()=>h||(h=new Promise(async(f,n)=>{await (a=m.createElement("script"));e.set("libraries",[...r]+"");for(k in g)e.set(k.replace(/[A-Z]/g,t=>"_"+t[0].toLowerCase()),g[k]);e.set("callback",c+".maps."+q);a.src=`https://maps.${c}apis.com/maps/api/js?`+e;d[q]=f;a.onerror=()=>h=n(Error(p+" could not load."));a.nonce=m.querySelector("script[nonce]")?.nonce||"";m.head.append(a)}));d[l]?console.warn(p+" only loads once. Ignoring:",g):d[l]=(f,...n)=>r.add(f)&&u().then(()=>d[l](f,...n))}) ({key: "AIzaSyB41DRUbKWJHPxaFjMAwdrzWzbVKartNGg", v: "weekly"});</script> </body> </html>