Metin Arama (Yeni) bir metin sorgusu alır ve eşleşen yerlerin bir listesini döndürür.
Metin Arama (Yeni), bir dizeye dayalı olarak bir dizi yerle ilgili bilgileri döndürür. Örneğin, "İstanbul'da pizza", "İstanbul yakınındaki ayakkabı mağazaları" ya da "Ana Cadde No: 123". Hizmet, metin dizesiyle eşleşen yerlerin bir listesiyle ve ayarlanan konum ön yargılarıyla yanıt verir. Metin Arama (Yeni) özelliği, yerleri türe göre aramanıza, çalışma saatleri ve puan gibi ölçütleri kullanarak filtreleme yapmanıza ve sonuçları belirli bir konumla kısıtlamanıza veya ön yargılara ayırmanıza olanak tanır.
Text Search'ü (Yeni) kullanmak için Google Cloud projenizde "Places API (Yeni)" seçeneğini etkinleştirmeniz gerekir. Ayrıntılar için Başlarken bölümüne bakın.
Yerleri metin sorgusuna göre bulun
Bir kısa mesaj sorgusu veya telefon numarasından yerlerin listesini döndürmek için searchByText
numaralı telefonu arayın.
Bir istek kullanarak arama parametrelerini belirtin, ardından searchByText
yöntemini çağırın. Sonuçlar, Place
nesnelerinden oluşan bir liste olarak döndürülür. Buradan yer ayrıntılarını edinebilirsiniz. Aşağıdaki snippet'te searchByText
için yapılan bir istek ve çağrı örneği gösterilmektedir:
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
parametresiyle arama yapmak için bir metin sorgusu veya telefon numarası belirtin.- Büyük/küçük harf kullanımı durumunda bir veya daha fazla veri alanının virgülle ayrılmış listesini belirtmek için
fields
parametresini kullanın (gerekli). - Yalnızca belirtilen türden sonuçları döndürmek için
includedType
parametresini kullanın. - Metin arama sonuçlarınıza belirli bir bölgeyle ağırlık vermek veya bunu kısıtlamak için
locationBias
ya dalocationRestriction
özelliğini kullanın.
Sorgu bir telefon numarası içeriyorsa bölge parametresi ayarlanmalıdır. Örneğin, Japonya'da bir yeri aramak için telefon numarası kullanıyorsanız ve istekte bulunan alan adı jp
ise region
parametresini "jp" olarak ayarlamanız gerekir. region
isteği istekten çıkarılırsa API, varsayılan olarak Amerika Birleşik Devletleri ("us") bölgesini kullanır.
Place
nesnelerinden oluşan bir liste olarak döndürülür. Buradan yer ayrıntılarını alabilirsiniz.
Örnek
Aşağıdaki örnekte, Mountain View yakınındaki taco restoranlarını sorgulamak için searchByText
kullanılmış ve sonuçları göstermek üzere bir harita işaretçilerle doldurulmuştur.
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>