Za pomocą pakietu Places SDK for iOS możesz określić miejsce, w którym urządzenie znajduje się w danej chwili. To znaczy miejsce, w którym aktualnie znajduje się urządzenie. Przykłady miejsc to lokalne firmy, ciekawe miejsca i położenie geograficzne.
- Proszenie o autoryzację lokalizacji
- Limity wykorzystania
- Pobieranie bieżącej lokalizacji
- Wyświetlanie atrybucji w aplikacji
Wysyłanie prośby o autoryzację lokalizacji
Jeśli Twoja aplikacja korzysta z
GMSPlacesClient findPlaceLikelihoodsFromCurrentLocationWithPlaceFields:, musi poprosić o pozwolenie na korzystanie z usług wykorzystujących lokalizację. Dodaj klucz NSLocationWhenInUseUsageDescription do pliku Info.plist, aby zdefiniować ciąg znaków 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 wywołać funkcję
findPlaceLikelihoodsFromCurrentLocationWithPlaceFields:, gdy aplikacja działa w tle, bez wyświetlania okna potwierdzenia, przed wywołaniem wykonaj te czynności:
- Dodaj klucz
NSLocationAlwaysUsageDescriptiondo plikuInfo.plist. - Przed wywołaniem metody wywołaj
requestAlwaysAuthorizationw dowolnej instancjiCLLocationManager.
Poproś o autoryzację od CLLocationManager w ten sposób:
Swift
locationManager.requestAlwaysAuthorization()
Objective-C
[self.locationManager requestAlwaysAuthorization];
Pobieranie bieżącej lokalizacji
Aby znaleźć lokalną firmę lub inne miejsce, w którym obecnie znajduje się urządzenie, wywołaj metodę GMSPlacesClient
findPlaceLikelihoodsFromCurrentLocationWithPlaceFields:. Uwzględnij te parametry:
- Co najmniej 1
GMSPlaceFieldokreślający, które typy danych mają zostać zwrócone. Jeśli pominiesz ten parametr, zostaną zwrócone WSZYSTKIE możliwe pola i zostaną naliczone odpowiednie opłaty. Dotyczy to tylko żądań dotyczących informacji o miejscu. - metodę wywołania zwrotnego do obsługi wyników.
Pola odpowiadają wynikom wyszukiwania miejsc i są podzielone na 3 kategorie rozliczeniowe: Basic, Contact i Atmosphere. Pola podstawowe są rozliczane według stawki podstawowej i nie wiążą się z dodatkowymi opłatami. Pola Kontakt i Atmosfera są rozliczane według wyższej stawki. Więcej informacji o tym, jak rozliczane są żądania danych o miejscach, znajdziesz w artykule Użycie 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. Wyższa wartość oznacza większe prawdopodobieństwo, że miejsce jest najlepiej dopasowane. Jeśli nie ma znanego miejsca odpowiadającego lokalizacji urządzenia, bufor może być pusty.
Poniższy przykładowy kod pobiera listę miejsc, w których urządzenie najprawdopodobniej się znajduje, i rejestruje nazwę oraz prawdopodobieństwo dla każdego miejsca.
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, że dane miejsce jest najlepiej dopasowane na liście miejsc zwróconych w ramach pojedynczego żądania. Nie można porównywać prawdopodobieństw w różnych żądaniach.
- Wartość prawdopodobieństwa będzie mieścić się w zakresie od 0 do 1,0.
- Suma prawdopodobieństw w zwracanej tablicy obiektów
GMSPlaceLikelihoodjest zawsze mniejsza lub równa 1,0. Pamiętaj, że suma nie musi wynosić 1,0.
Na przykład, aby przedstawić 55% prawdopodobieństwa, że prawidłowym miejscem jest miejsce A, i 35% prawdopodobieństwa, że jest to miejsce B, tablica prawdopodobieństwa zawiera 2 elementy: miejsce A z prawdopodobieństwem 0,55 i miejsce B z prawdopodobieństwem 0,35.
Wyświetlanie atrybucji w aplikacji
Gdy aplikacja wyświetla informacje uzyskane z GMSPlacesClient
findPlaceLikelihoodsFromCurrentLocationWithPlaceFields:, musi też wyświetlać atrybucje. Dowiedz się więcej o atrybucjach.