Za pomocą pakietu Places SDK na iOS możesz określić, gdzie znajduje się obecnie urządzenie. Oznacza to miejsce w bieżącej lokalizacji urządzenia. Przykłady miejsc to m.in. firmy lokalne, punkty orientacyjne i lokalizacje geograficzne.
- Prośba o autoryzację dostępu do 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
. - Przed wywołaniem metody wywołaj funkcję
requestAlwaysAuthorization
w dowolnym wystąpieniu klasyCLLocationManager
.
Aby poprosić 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. Pola Kontakt i Atmosfera są rozliczane według wyższej stawki. Więcej informacji o tym, jak naliczane są opłaty za wnioski o dane dotyczące miejsc, znajdziesz w artykule Wykorzystanie 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 zawiera wskazanie prawdopodobieństwa, że jest to właściwe miejsce. Im wyższa wartość, tym większe prawdopodobieństwo, że miejsce jest najbardziej pasujące. Bufor może być pusty, jeśli nie ma znanego miejsca odpowiadającego lokalizacji urządzenia.
Poniższy przykładowy kod pobiera listę miejsc, w których urządzenie znajduje się najprawdopodobniej, i zapisują nazwy 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 to względne prawdopodobieństwo, że dane miejsce jest najlepszym dopasowaniem na liście zwróconych miejsc w ramach pojedynczego żądania. Nie możesz porównywać prawdopodobieństw różnych żądań.
- 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 niekoniecznie 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.