جستجوی متن (جدید) یک پرس و جو متنی می گیرد و لیستی از مکان های منطبق را برمی گرداند.
جستجوی متن (جدید) اطلاعات مجموعهای از مکانها را بر اساس یک رشته برمیگرداند - برای مثال «پیتزا در نیویورک» یا «فروشگاههای کفش در نزدیکی اتاوا» یا «خیابان اصلی ۱۲۳». این سرویس با فهرستی از مکانهای منطبق با رشته متن و هرگونه سوگیری مکان تنظیم شده پاسخ میدهد. جستجوی متن (جدید) به شما امکان میدهد مکانها را بر اساس نوع جستجو کنید، با استفاده از معیارهایی مانند ساعات کاری و رتبهبندی فیلتر کنید، و نتایج را به یک مکان خاص محدود یا تعصب کنید.
برای استفاده از جستجوی متن (جدید)، باید "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);
جاوا اسکریپت
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 به طور پیش فرض در منطقه ایالات متحده ("ما") خواهد بود.
Place
برگردانده میشوند که میتوانید جزئیات مکان را از آنها دریافت کنید.مثال
مثال زیر از searchByText
برای پرس و جو برای رستورانهای تاکو در مجاورت Mountain View استفاده میکند و نقشهای را با نشانگرها برای نمایش نتایج پر میکند.
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();
جاوا اسکریپت
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>