Aktualne miejsce

Wybierz platformę: Android iOS

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.

  1. Prośba o autoryzację 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. Wywołaj requestAlwaysAuthorization w dowolnej instancji CLLocationManager 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.