Za pomocą pakietu Places SDK dla iOS możesz sprawdzić, gdzie obecnie znajduje się urządzenie. Oznacza to miejsce w ramach bieżącej lokalizacji urządzenia. Przykłady miejsc to firmy działające lokalnie, ciekawe miejsca lub lokalizacje geograficzne.
- Prośba o autoryzację lokalizacji
- Limity wykorzystania
- Pobieranie bieżącej lokalizacji
- Wyświetlanie informacji o pochodzeniu w aplikacji
Prośba o autoryzację lokalizacji
Jeśli Twoja aplikacja korzysta z
GMSPlacesClient findPlaceLikelihoodsFromCurrentLocationWithPlaceFields:
, musi poprosić o dostęp do usług lokalizacyjnych. Dodaj klucz NSLocationWhenInUseUsageDescription
do pliku Info.plist
, aby zdefiniować ciąg informujący użytkownika, dlaczego potrzebujesz usług lokalizacyjnych. Na przykład:
<key>NSLocationWhenInUseUsageDescription</key> <string>Show your location on the map</string>
Jeśli chcesz zadzwonić, gdy aplikacja działa w tle
findPlaceLikelihoodsFromCurrentLocationWithPlaceFields:
, bez uruchamiania okna potwierdzenia, wykonaj te czynności przed nawiązaniem połączenia:
- Dodaj klucz
NSLocationAlwaysUsageDescription
do plikuInfo.plist
. - Wywołaj
requestAlwaysAuthorization
w dowolnej instancjiCLLocationManager
przed wywołaniem metody.
Poproś użytkownika CLLocationManager
o autoryzację:
Swift
locationManager.requestAlwaysAuthorization()
Objective-C
[self.locationManager requestAlwaysAuthorization];
Pobieranie bieżącej lokalizacji
Aby znaleźć lokalną firmę lub inne miejsce, w którym znajduje się urządzenie, zadzwoń pod numer GMSPlacesClient
findPlaceLikelihoodsFromCurrentLocationWithPlaceFields:
. Uwzględnij te parametry:
- Co najmniej 1 element
GMSPlaceField
określający, które typy danych mają zostać zwrócone. Jeśli pominiesz ten parametr, zwrócone zostaną WSZYSTKIE możliwe pola, a Ty zostaniesz odpowiednio obciążony opłatą. Dotyczy to tylko próśb o szczegóły miejsca. - metoda wywołania zwrotnego do obsługi wyników.
Pola odpowiadają wynikom wyszukiwania w miejscach i są podzielone na 3 kategorie rozliczeniowe: podstawowe, kontaktowe i atmosferyczne. Pole podstawowe jest rozliczane według stawki podstawowej i nie powoduje dodatkowych opłat. Za pola Kontakt i Atmosfera opłaty są naliczane według wyższej stawki. Więcej informacji o opłatach za żądania danych dotyczących miejsc znajdziesz w artykule Korzystanie z danych i rozliczenia.
Interfejs API wywołuje określoną metodę wywołania zwrotnego, zwracając tablicę obiektów GMSPlaceLikelihood
.
Każdy obiekt GMSPlaceLikelihood
reprezentuje miejsce. W przypadku każdego miejsca wynik wskazuje na prawdopodobieństwo, że dane miejsce jest właściwe. Im wyższa wartość, tym większe prawdopodobieństwo, że miejsce jest najlepszym dopasowaniem. Bufor może być pusty, jeśli nie istnieje znane miejsce odpowiadające lokalizacji urządzenia.
Poniższy przykładowy kod pobiera listę miejsc, w których urządzenie znajduje się najprawdopodobniej, i rejestruje nazwę oraz prawdopodobieństwo każdego z nich.
Swift
// Specify the place data types to return. let fields: GMSPlaceField = GMSPlaceField(rawValue: UInt(GMSPlaceField.name.rawValue) | UInt(GMSPlaceField.placeID.rawValue))! placesClient?.findPlaceLikelihoodsFromCurrentLocation(withPlaceFields: fields, callback: { (placeLikelihoodList: Array<GMSPlaceLikelihood>?, error: Error?) in if let error = error { print("An error occurred: \(error.localizedDescription)") return } if let placeLikelihoodList = placeLikelihoodList { for likelihood in placeLikelihoodList { let place = likelihood.place print("Current Place name \(String(describing: place.name)) at likelihood \(likelihood.likelihood)") print("Current PlaceID \(String(describing: place.placeID))") } } })
Objective-C
// Specify the place data types to return. GMSPlaceField fields = (GMSPlaceFieldName | GMSPlaceFieldPlaceID); [_placesClient findPlaceLikelihoodsFromCurrentLocationWithPlaceFields:fields callback:^(NSArray<GMSPlaceLikelihood *> * _Nullable likelihoods, NSError * _Nullable error) { if (error != nil) { NSLog(@"An error occurred %@", [error localizedDescription]); return; } if (likelihoods != nil) { for (GMSPlaceLikelihood *likelihood in likelihoods) { GMSPlace *place = likelihood.place; NSLog(@"Current place name: %@", place.name); NSLog(@"Place ID: %@", place.placeID); } } }];
Uwagi dotyczące wartości prawdopodobieństwa:
- Prawdopodobieństwo określa względne prawdopodobieństwo tego, że miejsce jest najlepiej dopasowane na liście miejsc zwróconych dla pojedynczego żądania. Nie możesz porównywać prawdopodobieństw w różnych żądaniach.
- Wartość prawdopodobieństwa będzie się mieścić w przedziale od 0 do 1,0.
- Suma prawdopodobieństw w zwróconej tablicy obiektów
GMSPlaceLikelihood
jest zawsze mniejsza lub równa 1,0. Pamiętaj, że suma nie musi wynosić 1,0.
Na przykład, aby reprezentować prawdopodobieństwo 55%, że prawidłowym miejscem jest Miejsce A, a prawdopodobieństwo 35%, że jest to Miejsce B, tablica prawdopodobieństwa ma 2 elementy: Miejsce A z prawdopodobieństwo 0,55 i Miejsce B z prawdopodobieństwo 0,35.
Wyświetlanie atrybucji w aplikacji
Jeśli aplikacja wyświetla informacje uzyskane z GMSPlacesClient
findPlaceLikelihoodsFromCurrentLocationWithPlaceFields:
, musi też wyświetlać informacje o źródłach. Dowiedz się więcej o atrybucji.