Giriş
Yakınlarda Arama (Yeni) isteği bir veya daha fazla yer türü alır ve belirtilen alan içindeki eşleşen yerlerin listesini döndürür. Bir veya daha fazla veri türünü belirten bir alan maskesi gereklidir. Yakındaki Arama (Yeni) yalnızca POST isteklerini destekler.
API Gezgini, API ve API seçenekleri hakkında bilgi edinmek için canlı isteklerde bulunmanıza olanak tanır:
Yakındaki Arama (Yeni) sonuçlarının haritada nasıl gösterildiğini görmek için etkileşimli demoyu deneyin.
Yakında Arama (Yeni) istekleri
Yakındaki Arama (Yeni) isteği, şu biçimde bir URL'ye yönelik HTTP POST isteğidir:
https://places.googleapis.com/v1/places:searchNearby
Tüm parametreleri JSON istek gövdesinde veya üstbilgilerde POST isteğinin bir parçası olarak iletin. Örneğin:
curl -X POST -d '{ "includedTypes": ["restaurant"], "maxResultCount": 10, "locationRestriction": { "circle": { "center": { "latitude": 37.7937, "longitude": -122.3965}, "radius": 500.0 } } }' \ -H 'Content-Type: application/json' -H "X-Goog-Api-Key: API_KEY" \ -H "X-Goog-FieldMask: places.displayName" \ https://places.googleapis.com/v1/places:searchNearby
Yakında Arama (Yeni) yanıtları
Yakındaki Arama (Yeni), yanıt olarak bir JSON nesnesi döndürür. Yanıtın içinde:
places
dizisi, eşleşen tüm yerleri içerir.- Dizideki her yer, bir
Place
nesnesiyle temsil edilir.Place
nesnesi, tek bir yerle ilgili ayrıntılı bilgiler içerir. - İstekle iletilen FieldMask,
Place
nesnesinde döndürülen alanların listesini belirtir.
Tam JSON nesnesi şu biçimdedir:
{ "places": [ { object (Place) } ] }
Gerekli parametreler
-
FieldMask
Yanıt alan maskesi oluşturarak yanıtta döndürülecek alanların listesini belirtin. Yanıt alan maskesini,
$fields
veyafields
URL parametresini ya daX-Goog-FieldMask
HTTP üst bilgisini kullanarak yönteme iletin. Yanıtta varsayılan olarak döndürülen alanların listesi yoktur. Alan maskesini atlarsanız yöntem hata döndürür.Alan maskeleme, gereksiz veri istemediğinizden emin olmanızı sağlayan iyi bir tasarım uygulamasıdır. Bu sayede gereksiz işlem süresinden ve faturalandırma ücretlerinden kaçınabilirsiniz.
Döndürülecek yer verisi türlerinin virgülle ayrılmış bir listesini belirtin. Örneğin, yerin görünen adını ve adresini almak için.
X-Goog-FieldMask: places.displayName,places.formattedAddress
Tüm alanları almak için
*
öğesini kullanın.X-Goog-FieldMask: *
Aşağıdaki alanlardan birini veya daha fazlasını belirtin:
Aşağıdaki alanlar Yakında Arama Pro SKU'sunu tetikler:
places.accessibilityOptions
places.addressComponents
places.addressDescriptor
*
places.adrFormatAddress
places.attributions
places.businessStatus
places.containingPlaces
places.displayName
places.formattedAddress
places.googleMapsLinks
places.googleMapsUri
places.iconBackgroundColor
places.iconMaskBaseUri
places.id
places.location
places.name
**
places.photos
places.plusCode
places.postalAddress
places.primaryType
places.primaryTypeDisplayName
places.pureServiceAreaBusiness
places.shortFormattedAddress
places.subDestinations
places.types
places.utcOffsetMinutes
places.viewport
* Adres tanımlayıcıları Hindistan'daki müşteriler için genel olarak kullanılabilir ve diğer ülkelerde deneysel olarak sunulur.
**places.name
alanı,places/PLACE_ID
biçiminde yer kaynak adını içerir. Yerin metin adına erişmek içinplaces.displayName
değerini kullanın.Aşağıdaki alanlar Nearby Search Enterprise SKU'sunu tetikler:
places.currentOpeningHours
places.currentSecondaryOpeningHours
places.internationalPhoneNumber
places.nationalPhoneNumber
places.priceLevel
places.priceRange
places.rating
places.regularOpeningHours
places.regularSecondaryOpeningHours
places.userRatingCount
places.websiteUri
Aşağıdaki alanlar Nearby Search Enterprise + Atmosphere SKU'sunu tetikler:
places.allowsDogs
places.curbsidePickup
places.delivery
places.dineIn
places.editorialSummary
places.evChargeAmenitySummary
places.evChargeOptions
places.fuelOptions
places.generativeSummary
places.goodForChildren
places.goodForGroups
places.goodForWatchingSports
places.liveMusic
places.menuForChildren
places.neighborhoodSummary
places.parkingOptions
places.paymentOptions
places.outdoorSeating
places.reservable
places.restroom
places.reviews
places.reviewSummary
routingSummaries
*
places.servesBeer
places.servesBreakfast
places.servesBrunch
places.servesCocktails
places.servesCoffee
places.servesDessert
places.servesDinner
places.servesLunch
places.servesVegetarianFood
places.servesWine
places.takeout
* Yalnızca Metin Arama ve Yakında Arama
-
locationRestriction
Arama yapılacak bölge, merkez noktası ve metre cinsinden yarıçap ile tanımlanan bir daire olarak belirtilir. Yarıçap 0,0 ile 50000,0 arasında (bu değerler dahil) olmalıdır. Varsayılan yarıçap 0,0'dır. İsteğinizde 0,0'dan büyük bir değere ayarlamanız gerekir.
Örneğin:
"locationRestriction": { "circle": { "center": { "latitude": 37.7937, "longitude": -122.3965 }, "radius": 500.0 } }
İsteğe bağlı parametreler
-
includedTypes/excludedTypes, includedPrimaryTypes/excludedPrimaryTypes
Arama sonuçlarını filtrelemek için kullanılan türler Tablo A listesini belirtmenize olanak tanır. Her tür kısıtlama kategorisinde en fazla 50 tür belirtilebilir.
Bir yer, kendisiyle ilişkili Tablo A türlerinden yalnızca tek bir birincil türe sahip olabilir. Örneğin, birincil tür
"mexican_restaurant"
veya"steak_house"
olabilir. Bir yerin birincil türüyle ilgili sonuçları filtrelemek içinincludedPrimaryTypes
veexcludedPrimaryTypes
simgelerini kullanın.Bir yer, Tablo A'da yer alan türlerden birden fazla tür değerine de sahip olabilir. Tablo A ile ilişkilendirilmiş. Örneğin, bir restoranın şu türleri olabilir:
"seafood_restaurant"
,"restaurant"
,"food"
,"point_of_interest"
,"establishment"
. Bir yerle ilişkili türlerin listesindeki sonuçları filtrelemek içinincludedTypes
veexcludedTypes
tuşlarını kullanın."restaurant"
veya"hotel"
gibi genel bir birincil tür belirttiğinizde yanıtta, belirtilen türden daha spesifik bir birincil türe sahip yerler olabilir. Örneğin,"restaurant"
birincil türünü dahil etmeyi belirtirsiniz. Yanıtta, birincil türü"restaurant"
olan yerler bulunabilir. Bununla birlikte, yanıtta"chinese_restaurant"
veya"seafood_restaurant"
gibi daha spesifik bir birincil türe sahip yerler de bulunabilir.Bir arama birden fazla tür kısıtlamasıyla belirtilirse yalnızca tüm kısıtlamaları karşılayan yerler döndürülür. Örneğin,
{"includedTypes": ["restaurant"], "excludedPrimaryTypes": ["steak_house"]}
değerini belirtirseniz döndürülen yerler"restaurant"
ile ilgili hizmetler sunar ancak öncelikli olarak"steak_house"
olarak faaliyet göstermez.includedTypes
Aranacak Tablo A'daki yer türlerinin virgülle ayrılmış listesi. Bu parametre atlanırsa tüm türlerdeki yerler döndürülür.
excludedTypes
Aramadan hariç tutulacak A Tablosu'ndaki yer türlerinin virgülle ayrılmış listesi.
İstek içinde hem
includedTypes
( ör."school"
) hem deexcludedTypes
(ör."primary_school"
) belirtirseniz yanıtta"school"
olarak kategorize edilen ancak"primary_school"
olarak kategorize edilmeyen yerler yer alır. Yanıtta,includedTypes
'den en az biriyle eşleşen veexcludedTypes
'den hiçbiriyle eşleşmeyen yerler yer alıyor.includedTypes
veexcludedTypes
içinde görünen bir tür gibi çakışan türler varsaINVALID_REQUEST
hatası döndürülür.includedPrimaryTypes
Aramaya dahil edilecek A Tablosu'ndaki birincil yer türlerinin virgülle ayrılmış listesi.
excludedPrimaryTypes
Aramadan hariç tutulacak A Tablosu'ndaki birincil yer türlerinin virgülle ayrılmış listesi.
Hem
includedPrimaryTypes
hem deexcludedPrimaryTypes
içinde görünen bir tür gibi çakışan birincil türler varsaINVALID_ARGUMENT
hatası döndürülür. -
languageCode
Sonuçların döndürüleceği dil.
- Desteklenen dillerin listesini inceleyin. Google, desteklenen dilleri sık sık güncellediği için bu liste kapsamlı olmayabilir.
languageCode
sağlanmazsa API varsayılan olaraken
değerini kullanır. Geçersiz bir dil kodu belirtirseniz APIINVALID_ARGUMENT
hatası döndürür.- API, hem kullanıcı hem de yerel halk tarafından okunabilir bir açık adres sağlamak için elinden geleni yapar. Bu amaca ulaşmak için, tercih edilen dili göz önünde bulundurarak gerekirse kullanıcının okuyabileceği bir alfabeye çevrilmiş yerel dildeki sokak adreslerini döndürür. Diğer tüm adresler tercih edilen dilde döndürülür. Adres bileşenlerinin tümü aynı dilde döndürülür. Bu dil, ilk bileşenden seçilir.
- Bir ad tercih edilen dilde kullanılamıyorsa API en yakın eşleşmeyi kullanır.
- Tercih edilen dil, API'nin döndürmeyi seçtiği sonuç kümesi ve bu sonuçların döndürülme sırası üzerinde küçük bir etkiye sahiptir. Coğrafi kodlayıcı, kısaltmaları (ör. sokak türlerinin kısaltmaları) veya bir dilde geçerli olup başka bir dilde geçerli olmayan eş anlamlıları dile bağlı olarak farklı şekilde yorumlar.
-
maxResultCount
Döndürülecek maksimum yer sonucu sayısını belirtir. 1 ile 20 (varsayılan) arasında olmalıdır (bu değerler dahil).
-
rankPreference
Kullanılacak sıralama türü. Bu parametre atlanırsa sonuçlar popülerliğe göre sıralanır. Aşağıdakilerden biri olabilir:
POPULARITY
(varsayılan) Sonuçları popülerliklerine göre sıralar.DISTANCE
Sonuçları, belirtilen konuma olan mesafelerine göre artan düzende sıralar.
-
regionCode
Yanıtı biçimlendirmek için kullanılan bölge kodu, iki karakterli CLDR kodu değeri olarak belirtilir. Varsayılan değer yoktur.
Yanıtın
formattedAddress
alanındaki ülke adıregionCode
ile eşleşiyorsa ülke koduformattedAddress
alanından çıkarılır. Bu parametrenin, her zaman ülke adını içerenadrFormatAddress
veya hiçbir zaman ülke adını içermeyenshortFormattedAddress
üzerinde etkisi yoktur.Bazı önemli istisnalar dışında çoğu CLDR kodu ISO 3166-1 kodlarıyla aynıdır. Örneğin, Birleşik Krallık'ın ccTLD'si "uk" (.co.uk) iken ISO 3166-1 kodu "gb"dir (teknik olarak "Büyük Britanya ve Kuzey İrlanda Birleşik Krallığı" tüzel kişiliği için). Parametre, geçerli yasaya göre sonuçları etkileyebilir.
Yakında Arama (Yeni) örnekleri
Belirli bir türdeki yerleri bulma
Aşağıdaki örnekte, circle
ile tanımlanan 500 metre yarıçapındaki tüm restoranların görünen adları için bir Yakındaki Arama (Yeni) isteği gösterilmektedir:
curl -X POST -d '{ "includedTypes": ["restaurant"], "maxResultCount": 10, "locationRestriction": { "circle": { "center": { "latitude": 37.7937, "longitude": -122.3965}, "radius": 500.0 } } }' \ -H 'Content-Type: application/json' -H "X-Goog-Api-Key: API_KEY" \ -H "X-Goog-FieldMask: places.displayName" \ https://places.googleapis.com/v1/places:searchNearby
X-Goog-FieldMask
başlığının, yanıtta places.displayName
veri alanlarının bulunduğunu belirttiğini unutmayın.
Yanıt
şu biçimde olur:
{ "places": [ { "displayName": { "text": "La Mar Cocina Peruana", "languageCode": "en" } }, { "displayName": { "text": "Kokkari Estiatorio", "languageCode": "en" } }, { "displayName": { "text": "Harborview Restaurant & Bar", "languageCode": "en" } }, ... }
Ek bilgiler döndürmek için alan maskesine daha fazla veri türü ekleyin.
Örneğin, restorana ait adres, tür ve web adresini yanıta eklemek için places.formattedAddress,places.types,places.websiteUri
ifadesini ekleyin:
curl -X POST -d '{ "includedTypes": ["restaurant"], "maxResultCount": 10, "locationRestriction": { "circle": { "center": { "latitude": 37.7937, "longitude": -122.3965}, "radius": 500.0 } } }' \ -H 'Content-Type: application/json' -H "X-Goog-Api-Key: API_KEY" \ -H "X-Goog-FieldMask: places.displayName,places.formattedAddress,places.types,places.websiteUri" \ https://places.googleapis.com/v1/places:searchNearby
Yanıt artık formda yer alıyor:
{ "places": [ { "types": [ "seafood_restaurant", "restaurant", "food", "point_of_interest", "establishment" ], "formattedAddress": "PIER 1 1/2 The Embarcadero N, San Francisco, CA 94105, USA", "websiteUri": "http://lamarsf.com/", "displayName": { "text": "La Mar Cocina Peruana", "languageCode": "en" } }, { "types": [ "greek_restaurant", "meal_takeaway", "restaurant", "food", "point_of_interest", "establishment" ], "formattedAddress": "200 Jackson St, San Francisco, CA 94111, USA", "websiteUri": "https://kokkari.com/", "displayName": { "text": "Kokkari Estiatorio", "languageCode": "en" } }, ... }
Birden fazla türde yer bulma
Aşağıdaki örnekte, belirtilen circle
konumunun 1.000 metre yarıçapındaki tüm marketlerin ve içki dükkanlarının görünen adları için bir Yakındaki Arama (Yeni) isteği gösterilmektedir:
curl -X POST -d '{ "includedTypes": ["liquor_store", "convenience_store"], "maxResultCount": 10, "locationRestriction": { "circle": { "center": { "latitude": 37.7937, "longitude": -122.3965 }, "radius": 1000.0 } } }' \ -H 'Content-Type: application/json' -H "X-Goog-Api-Key: API_KEY" \ -H "X-Goog-FieldMask: places.displayName,places.primaryType,places.types" \ https://places.googleapis.com/v1/places:searchNearby
places.primaryType
ve places.types
ekleniyor. Böylece sonuçlardan uygun yerin seçilmesi kolaylaşıyor.
Bir yer türünü aramadan hariç tutma
Aşağıdaki örnekte, "primary_school"
türündeki tüm yerler hariç olmak üzere "school"
türündeki tüm yerler için Yakındaki Arama (Yeni) isteği gösterilmektedir. Sonuçlar mesafeye göre sıralanır:
curl -X POST -d '{ "includedTypes": ["school"], "excludedTypes": ["primary_school"], "maxResultCount": 10, "locationRestriction": { "circle": { "center": { "latitude": 37.7937, "longitude": -122.3965 }, "radius": 1000.0 } }, "rankPreference": "DISTANCE" }' \ -H 'Content-Type: application/json' -H "X-Goog-Api-Key: API_KEY" \ -H "X-Goog-FieldMask: places.displayName" \ https://places.googleapis.com/v1/places:searchNearby
Bir bölgenin yakınındaki tüm yerleri mesafeye göre sıralayarak arama
Aşağıdaki örnekte, San Francisco şehir merkezindeki bir noktanın yakınındaki yerler için bir Yakınlarda Arama (Yeni) isteği gösterilmektedir. Bu örnekte, sonuçları mesafeye göre sıralamak için rankPreference
parametresini ekliyorsunuz:
curl -X POST -d '{ "maxResultCount": 10, "rankPreference": "DISTANCE", "locationRestriction": { "circle": { "center": { "latitude": 37.7937, "longitude": -122.3965 }, "radius": 1000.0 } } }' \ -H 'Content-Type: application/json' -H "X-Goog-Api-Key: API_KEY" \ -H "X-Goog-FieldMask: places.displayName" \ https://places.googleapis.com/v1/places:searchNearby
Adres tanımlayıcıları alma
Adres tanımlayıcıları, yakındaki önemli noktalar ve kapsayan alanlar da dahil olmak üzere bir yerin konumuyla ilgili ilişkisel bilgiler sağlar.
Aşağıdaki örnekte, San Jose'deki bir alışveriş merkezinin yakınındaki yerler için bir Yakın Arama (Yeni) isteği gösterilmektedir. Bu örnekte, alan maskesine addressDescriptors
ekliyorsunuz:
curl -X POST -d '{ "maxResultCount": 5, "locationRestriction": { "circle": { "center": { "latitude": 37.321328, "longitude": -121.946275 },"radius": 1000 } }, "includedTypes": ["restaurant", "cafe"], "excludedTypes": [], "rankPreference":"POPULARITY" }' \ -H 'Content-Type: application/json' \ -H "X-Goog-Api-Key: API_KEY" \ -H "X-Goog-FieldMask: places.displayName,places.addressDescriptor" \ https://places.googleapis.com/v1/places:searchNearby
Yanıtta, istekte belirtilen yer, yakındaki önemli noktaların listesi ve bu noktaların yere olan mesafesi ile alanların listesi ve bu alanların yerle olan kapsama ilişkisi yer alır:
{ "places": [ { "displayName": { "text": "Westfield Valley Fair", "languageCode": "en" }, "addressDescriptor": { "landmarks": [ { "name": "places/ChIJ62_oCR7Lj4AR_MGWkSPotD4", "placeId": "ChIJ62_oCR7Lj4AR_MGWkSPotD4", "displayName": { "text": "Nordstrom", "languageCode": "en" }, "types": [ "clothing_store", "department_store", "establishment", "point_of_interest", "shoe_store", "store" ], "straightLineDistanceMeters": 114.76984, "travelDistanceMeters": 114.261856 }, { "name": "places/ChIJgexMlR_Lj4ARiKCKuhNnjn0", "placeId": "ChIJgexMlR_Lj4ARiKCKuhNnjn0", "displayName": { "text": "Valley Fair Mall Eyexam of CA", "languageCode": "en" }, "types": [ "establishment", "health", "point_of_interest" ], "straightLineDistanceMeters": 131.62566, "travelDistanceMeters": 237.33253 }, { "name": "places/ChIJWWIlNx7Lj4ARpe1E0ob-_GI", "placeId": "ChIJWWIlNx7Lj4ARpe1E0ob-_GI", "displayName": { "text": "Din Tai Fung", "languageCode": "en" }, "types": [ "establishment", "food", "point_of_interest", "restaurant" ], "straightLineDistanceMeters": 110.0775, "travelDistanceMeters": 171.41951 }, { "name": "places/ChIJwyfPQx7Lj4AR7bYI2A2Yc54", "placeId": "ChIJwyfPQx7Lj4AR7bYI2A2Yc54", "displayName": { "text": "Abercrombie & Fitch", "languageCode": "en" }, "types": [ "clothing_store", "establishment", "point_of_interest", "shoe_store", "store" ], "spatialRelationship": "DOWN_THE_ROAD", "straightLineDistanceMeters": 53.620117, "travelDistanceMeters": 2.4578214 }, { "name": "places/ChIJpycNQx7Lj4ARjhXw3PrM_kU", "placeId": "ChIJpycNQx7Lj4ARjhXw3PrM_kU", "displayName": { "text": "Hollister Co.", "languageCode": "en" }, "types": [ "clothing_store", "establishment", "point_of_interest", "shoe_store", "store" ], "spatialRelationship": "DOWN_THE_ROAD", "straightLineDistanceMeters": 56.53726, "travelDistanceMeters": 15.418246 } ], "areas": [ { "name": "places/ChIJb3F-EB7Lj4ARnHApQ_Hu1gI", "placeId": "ChIJb3F-EB7Lj4ARnHApQ_Hu1gI", "displayName": { "text": "Westfield Valley Fair", "languageCode": "en" }, "containment": "WITHIN" }, { "name": "places/ChIJXYuykB_Lj4AR1Ot8nU5q26Q", "placeId": "ChIJXYuykB_Lj4AR1Ot8nU5q26Q", "displayName": { "text": "Valley Fair", "languageCode": "en" }, "containment": "WITHIN" }, { "name": "places/ChIJtYoUX2DLj4ARKoKOb1G0CpM", "placeId": "ChIJtYoUX2DLj4ARKoKOb1G0CpM", "displayName": { "text": "Central San Jose", "languageCode": "en" }, "containment": "OUTSKIRTS" } ] } }, /.../ }
Deneyin!
API Gezgini, API ve API seçeneklerine alışabilmeniz için örnek istekler göndermenize olanak tanır.
Sayfanın sağ tarafındaki API simgesini api seçin.
İsteğe bağlı olarak istek parametrelerini düzenleyin.
Yürüt düğmesini seçin. İletişim kutusunda, isteği göndermek için kullanmak istediğiniz hesabı seçin.
API Gezgini penceresini genişletmek için API Gezgini panelinde tam ekran simgesini fullscreen seçin.