Aktualne miejsce

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.

  1. Prośba o autoryzację dostępu do lokalizacji
  2. Limity wykorzystania
  3. Pobieranie bieżącej lokalizacji
  4. 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:

  1. Dodaj klucz NSLocationAlwaysUsageDescription do pliku Info.plist.
  2. Przed wywołaniem metody wywołaj funkcję requestAlwaysAuthorization w dowolnym wystąpieniu klasy CLLocationManager.

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.