Giriş
Yer kimlikleri, Google Places veritabanında ve Google Haritalar'da bir yeri benzersiz şekilde tanımlar. Aşağıdaki Maps API'lerine yapılan isteklerde yer kimlikleri kabul edilir:
- Geocoding API ve Coğrafi Kodlama Hizmeti, Maps JavaScript API'de bir yer kimliği için adres alma.
- Routes API, Directions API (Eski) ve Directions Hizmeti, Maps JavaScript API'de (Eski) başlangıç, hedef ve ara noktaları belirtme.
- Routes API ve Distance Matrix API (Eski) ve Distance Matrix Hizmeti, Maps JavaScript API (Eski) içinde başlangıç ve varış noktalarını belirtme.
- Places API (Yeni), Android için Yerler SDK'sı (Yeni), iOS için Yerler SDK'sı (Yeni) ve Yerler Kitaplığı'nda yer ayrıntılarını alma.
- Maps Embed API'de yer kimliği parametrelerini kullanma.
- Haritalar URL'lerindeki arama sorgularını alma
- Roads API'de hız sınırlarını görüntüleme.
- Sınırlara yönelik veri odaklı stilde sınır çokgenlerini bulma ve stilini belirleme.
Belirli bir yerin kimliğini bulma
Belirli bir yerin yer kimliğini mi arıyorsunuz? Bir yeri aramak ve kimliğini almak için aşağıdaki yer kimliği bulma aracını kullanın:
Alternatif olarak, Maps JavaScript API belgelerinde yer kimliği bulucuyu ve kodunu inceleyebilirsiniz.
Genel Bakış
Yer kimliği, bir yeri benzersiz şekilde tanımlayan metin biçiminde bir tanımlayıcıdır. Tanımlayıcının uzunluğu değişebilir (yer kimlikleri için maksimum uzunluk yoktur). Örnekler:
-
ChIJgUbEo8cfqokR5lP9_Wh_DaM
-
GhIJQWDl0CIeQUARxks3icF8U8A
-
EicxMyBNYXJrZXQgU3QsIFdpbG1pbmd0b24sIE5DIDI4NDAxLCBVU0EiGhIYChQKEgnRTo6ixx-qiRHo_bbmkCm7ZRAN
-
EicxMyBNYXJrZXQgU3QsIFdpbG1pbmd0b24sIE5DIDI4NDAxLCBVU0E
-
IhoSGAoUChIJ0U6OoscfqokR6P225pApu2UQDQ
İşletmeler, önemli noktalar, parklar ve kavşaklar dahil olmak üzere çoğu konum için yer kimlikleri kullanılabilir. Aynı yer veya konumun birden fazla farklı yer kimliği olabilir. Yer kimlikleri zaman içinde değişebilir.
Places API ve bir dizi Google Haritalar Platformu API'sinde aynı yer kimliğini kullanabilirsiniz. Örneğin, Places API, Maps JavaScript API, Geocoding API, Maps Embed API ve Roads API'de bir yere referans vermek için aynı yer kimliğini kullanabilirsiniz.
Yer kimliğini kullanarak yer ayrıntılarını alma
Yer kodlarını kullanmanın yaygın bir yolu, bir yer aramak (örneğin, Places API veya Maps JavaScript API'deki Yer Kitaplığı kullanılarak) ve ardından yer ayrıntılarını almak için döndürülen yer kodunu kullanmaktır. Yer kimliğini saklayabilir ve daha sonra aynı yer ayrıntılarını almak için kullanabilirsiniz. Aşağıda yer kimliklerini kaydetme hakkında bilgi edinebilirsiniz.
iOS için Yerler SDK'sını kullanma örneği
Yer kimliği, bir yeri benzersiz şekilde tanımlayan metin biçiminde bir tanımlayıcıdır. iOS için Yerler SDK'sında, bir yerin kimliğini GMSPlace
nesnesinden alabilirsiniz. Yer kimliğini saklayabilir ve daha sonra GMSPlace
nesnesini almak için kullanabilirsiniz.
Kimliğe göre yer almak için aşağıdaki parametreleri ileterek GMSPlacesClient
fetchPlaceFromPlaceID:
işlevini çağırın:
- Yer kimliği içeren bir dize.
- Döndürülecek veri türlerini belirten bir veya daha fazla
GMSPlaceField
. - Arama, otomatik tamamlama sorgusunu sonuçlandırmak için yapılıyorsa oturum jetonu. Aksi takdirde nil değerini iletin.
- Sonucu işlemek için
GMSPlaceResultCallback
.
API, belirtilen geri çağırma yöntemini çağırarak GMSPlace
nesnesini iletir. Yer bulunamazsa yer nesnesi nil olur.
iOS için Places Swift SDK'sı
// Initialize Places Swift Client. let placesClient = PlacesClient.shared // A hotel in Saigon with an attribution let placeID = "ChIJV4k8_9UodTERU5KXbkYpSYs" // Fetch Place Request. let fetchPlaceRequest = FetchPlaceRequest( placeID: placeID, placeProperties: [.displayName] ) Task { switch await placesClient.fetchPlace(with: fetchPlaceRequest) { case .success(let place): print("The selected place is: \(place.displayName): \(String(describing: place.description))") case .failure(let placesError): print("Place not found: \(placeID); \(placesError)") } }
Swift
// A hotel in Saigon with an attribution. let placeID = "ChIJV4k8_9UodTERU5KXbkYpSYs" // Specify the place data types to return. let fields: GMSPlaceField = GMSPlaceField(rawValue: UInt(GMSPlaceField.name.rawValue) | UInt(GMSPlaceField.placeID.rawValue))! placesClient?.fetchPlace(fromPlaceID: placeID, placeFields: fields, sessionToken: nil, callback: { (place: GMSPlace?, error: Error?) in if let error = error { print("An error occurred: \(error.localizedDescription)") return } if let place = place { self.lblName?.text = place.name print("The selected place is: \(place.name)") } })
Objective-C
// A hotel in Saigon with an attribution. NSString *placeID = @"ChIJV4k8_9UodTERU5KXbkYpSYs"; // Specify the place data types to return. GMSPlaceField fields = (GMSPlaceFieldName | GMSPlaceFieldPlaceID); [_placesClient fetchPlaceFromPlaceID:placeID placeFields:fields sessionToken:nil callback:^(GMSPlace * _Nullable place, NSError * _Nullable error) { if (error != nil) { NSLog(@"An error occurred %@", [error localizedDescription]); return; } if (place != nil) { NSLog(@"The selected place is: %@", [place name]); } }];
Yer kimliklerini daha sonra kullanmak üzere kaydetme
Yer kimlikleri, Google Haritalar Platformu Hizmet Şartları'nın Bölüm 3.2.3(b)'sinde belirtilen önbelleğe alma kısıtlamalarından muaftır. Bu nedenle, yer kimliği değerlerini daha sonra kullanmak üzere saklayabilirsiniz.
Depolanan yer kimliklerini yenileme
Google Haritalar veritabanındaki güncellemeler nedeniyle yer kimlikleri değişebileceğinden, 12 aydan eski yer kimliklerinin yenilenmesi önerilir. fields
parametresinde yalnızca GMSPlaceFieldPlaceID
alanını belirterek Yer Ayrıntıları isteği göndererek yer kimliklerini ücretsiz olarak yenileyebilirsiniz.
Bu çağrı, Yer Ayrıntıları - Kimlik Yenileme SKU'sunu tetikler.
Yer kimlikleri kullanılırken hata kodları
INVALID_REQUEST
INVALID_REQUEST
durum kodu, belirtilen yer kimliğinin geçerli olmadığını gösterir. Yer kimliği kısaltıldığında veya başka bir şekilde değiştirildiğinde ve artık doğru olmadığında INVALID_REQUEST
döndürülebilir.
NOT_FOUND
NOT_FOUND
durum kodu, belirtilen yer kimliğinin eski olduğunu gösterir. Bir işletme kapandığında veya yeni bir konuma taşındığında yer kimliği geçerliliğini yitirebilir. Yer kimlikleri, Google Haritalar veritabanındaki güncellemeler nedeniyle de değişebilir. Bu gibi durumlarda, bir yer yeni bir yer kimliği alabilir ve eski kimlik NOT_FOUND
yanıtını döndürür.
Eski bir yer kimliği olması durumunda sonuçları yenilemek için her yer kimliğini döndüren orijinal isteği saklayın ve gerektiğinde isteği yeniden gönderin. Yeniden gönderilen isteğin uygun SKU'ya göre faturalandırılacağını unutmayın.
Bazı yer kimliği türleri bazen NOT_FOUND
yanıtına neden olabilir veya API, yanıtta farklı bir yer kimliği döndürebilir. Bu yer kimliği türleri şunlardır:
- Google Haritalar'da tam adres olarak bulunmayan ancak bir dizi adresten çıkarılan sokak adresleri.
- İsteğin şehir veya yerleşim yeri de belirttiği uzun bir rotanın segmentleri.
- Kavşaklar.
subpremise
türünde bir adres bileşenine sahip yerler.
Bu kimlikler genellikle uzun bir dize biçimindedir (yer kimlikleri için maksimum uzunluk yoktur). Örneğin:
EpID4LC14LC_4LCo4LCv4LGN4LCo4LCX4LCw4LGNIC0g4LC44LGI4LCm4LGN4LCs4LC-4LCm4LGNIOCwsOCxi-CwoeCxjeCwoeCxgSAmIOCwteCwv-CwqOCwr-CxjSDgsKjgsJfgsLDgsY0g4LCu4LGG4LCv4LC_4LCo4LGNIOCwsOCxi-CwoeCxjeCwoeCxgSwg4LC14LC_4LCo4LCv4LGNIOCwqOCwl-CwsOCxjSDgsJXgsL7gsLLgsKjgsYAsIOCwsuCwleCxjeCwt-CxjeCwruCwv-CwqOCwl-CwsOCxjSDgsJXgsL7gsLLgsKjgsYAsIOCwuOCwsOCxguCwsOCxjSDgsKjgsJfgsLDgsY0g4LC14LGG4LC44LGN4LCf4LGNLCDgsLjgsK_gsYDgsKbgsL7gsKzgsL7gsKbgsY0sIOCwueCxiOCwpuCwsOCwvuCwrOCwvuCwpuCxjSwg4LCk4LGG4LCy4LCC4LCX4LC-4LCjIDUwMDA1OSwg4LCt4LC-4LCw4LCk4LCm4LGH4LC24LCCImYiZAoUChIJ31l5uGWYyzsR9zY2qk9lDiASFAoSCd9ZebhlmMs7Efc2NqpPZQ4gGhQKEglDz61OZpjLOxHgDJCFY-o1qBoUChIJi37TW2-YyzsRr_uv50r7tdEiCg1MwFcKFS_dyy4