Metin Arama (Yeni), bir metin sorgusunu alır ve eşleşen bir liste döndürür yer.
Metin Arama (Yeni), bir dizi bir dizeye göre yer alır. Örneğin, "İstanbul'da pizza" veya "İstanbul yakınındaki ayakkabı mağazaları" veya "Ana Cadde No: 123". Hizmet, metin dizesiyle eşleşen yerlerin bir listesiyle ve konum etkisi ayarlanmış olmalıdır. Metin Arama (Yeni) sayesinde yerleri türe göre, çalışma saatleri ve derecelendirme gibi kriterlere göre filtreleyin ve kısıtlama ya da önyargı sonuçları belirli bir konuma göre gösterir.
Metin Arama'yı (Yeni) kullanmak için "Places API (Yeni)" seçeneğini etkinleştirmeniz gerekir. şurada: Google Cloud projesi. Başlarken sayfasına göz atın. inceleyebilirsiniz.
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
nesne listesi olarak döndürülür ve burada
yer ayrıntılarını inceleyin. İlgili içeriği oluşturmak için kullanılan
Aşağıdaki snippet'te searchByText
için 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.- Virgülle ayrılmış bir liste belirtmek için
fields
parametresini kullanın (gerekli) devede daha fazla veri alanı dava açın. - Yalnızca belirtilen türden sonuçları döndürmek için
includedType
parametresini kullanın. - Yanlılık veya kısıtlama uygulamak için
locationBias
ya dalocationRestriction
kullanın metin arama sonuçlarınızı belirli bir bölgeye göre ayarlayabilirsiniz.
Sorgu bir telefon numarası içeriyorsa bölge parametresi ayarlanmalıdır. Örneğin,
Japonya'da bir yeri aramak için telefon numarası kullanın ve istekte bulunan alan adı jp
ise
region
parametresini "jp" olarak ayarlamanız gerekir. region
API, Amerika Birleşik Devletleri ("us") bölgesine varsayılan olarak ayarlanır.
Place
nesne listesi olarak döndürülür. Bu listeden
yer ayrıntılarını inceleyin.
Örnek
Aşağıdaki örnekte searchByText
kullanılarak
bir harita oluşturur ve sonuçları göstermek için haritayı işaretçilerle doldurur.
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>