Metin Arama (Yeni)

Platform seçin: Android iOS JavaScript Web Hizmeti

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 da locationRestriction özelliğini kullanın.
Tesislerin tam listesini inceleyin.

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.

Sonuçlar, 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>
    <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. 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>

Örneği Deneyin