Metin Arama (Yeni), bir metin sorgusu alır ve eşleşen yerlerin listesini döndürür.
Metin Arama (Yeni), bir dizeye göre bir dizi yer hakkındaki bilgileri döndürür. Örneğin, "İstanbul'da pizza", "Taksim yakınındaki ayakkabı mağazaları" veya "Ana Cadde No: 123". Hizmet, metin dizesiyle eşleşen yerlerin bir listesiyle ve ayarlanan konuma bağlı olarak yanıt verir. Metin Arama (Yeni), 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 sınırlandırmanıza veya ağırlıklandırmanıza olanak tanır.
Metin Arama (Yeni) özelliğini 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.
Metin sorgusuna göre yer bulma
Kısa mesaj veya telefon numarasından alınan yer listesini döndürmek için searchByText
numaralı telefonu arayın.
Bir istek kullanarak arama parametrelerini belirtin ve ardından searchByText
çağrısı yapın. Sonuçlar, Place
nesnelerinin bir listesi olarak döndürülür. Bu listeden yer ayrıntılarını alabilirsiniz. Aşağıdaki snippet'te searchByText
öğesine 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.- Deve büyük harf kullanımında bir veya daha fazla veri alanının virgülle ayrılmış listesini belirtmek için
fields
parametresini (gerekli) kullanın. - Yalnızca belirtilen türdeki sonuçları döndürmek için
includedType
parametresini kullanın. - Metin arama sonuçlarınızı belirli bir bölgeyle sınırlamak veya ağırlık vermek için
locationBias
ya dalocationRestriction
kullanın.
Sorgu telefon numarası içeriyorsa bölge parametresi ayarlanmalıdır. Örneğin, Japonya'da bir yer aramak için telefon numarası kullanırsanız ve istekte bulunan alan adı jp
ise region
parametresini "jp" olarak ayarlamanız gerekir. İstekten region
çıkarılırsa API, varsayılan olarak Amerika Birleşik Devletleri ("us") bölgesini kullanır.
Place
nesnelerinin bir listesi olarak döndürülür. Bu listeden 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ıştır ve harita, sonuçları göstermek üzere işaretçilerle doldurulur.
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> <script src="https://polyfill.io/v3/polyfill.min.js?features=default"></script> <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>