Aktualne miejsce (starsza wersja)

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.

  1. Proszenie o autoryzację lokalizacji
  2. Limity wykorzystania
  3. Pobieranie bieżącej lokalizacji
  4. 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:

  1. Dodaj klucz NSLocationAlwaysUsageDescription do pliku Info.plist.
  2. Przed wywołaniem metody wywołaj requestAlwaysAuthorization w dowolnej instancji CLLocationManager.

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 GMSPlaceField okreś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 GMSPlaceLikelihood jest 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.