Aktualne miejsce

Wybierz platformę: Android iOS

Za pomocą pakietu SDK Miejsc na iOS możesz sprawdzić, gdzie obecnie znajduje się urządzenie. Oznacza to, że jest to miejsce w aktualnie zgłaszanej lokalizacji urządzenia. Mogą to być na przykład lokalne firmy, ciekawe miejsca i lokalizacje geograficzne.

  1. Prośba o autoryzację lokalizacji
  2. Limity wykorzystania
  3. Sprawdzanie bieżącej lokalizacji
  4. Wyświetlanie atrybucji w aplikacji

Prośba o autoryzację lokalizacji

Jeśli Twoja aplikacja korzysta z danych GMSPlacesClient findPlaceLikelihoodsFromCurrentLocationWithPlaceFields:, musi prosić o pozwolenie na korzystanie z usług lokalizacyjnych. Dodaj do pliku Info.plist klucz NSLocationWhenInUseUsageDescription, 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ć findPlaceLikelihoodsFromCurrentLocationWithPlaceFields:, gdy aplikacja działa w tle, bez wyświetlania okna z potwierdzeniem, przed wykonaniem wywołania wykonaj te czynności:

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

Poproś CLLocationManager o autoryzację w ten sposób:

Swift

    locationManager.requestAlwaysAuthorization()
    

Objective-C

    [self.locationManager requestAlwaysAuthorization];
    

Pobieram bieżącą lokalizację

Aby znaleźć firmę lokalną lub inne miejsce, w którym znajduje się obecnie urządzenie, zadzwoń pod numer GMSPlacesClient findPlaceLikelihoodsFromCurrentLocationWithPlaceFields:. Uwzględnij te parametry:

  • Co najmniej 1 element GMSPlaceField określający typy danych, które mają zostać zwrócone. Jeśli pominiesz ten parametr, zwrócone zostaną WSZYSTKIE możliwe pola i odpowiednio naliczymy opłaty. Dotyczy to tylko próśb o szczegóły miejsca.
  • Metoda wywołania zwrotnego do obsługi wyników.

Pola odpowiadają wynikom wyszukiwania miejsc i są podzielone na 3 kategorie rozliczeń: Podstawowe, Kontakt i Atmosfera. Pola podstawowe są rozliczane według stawki podstawowej i nie powodują naliczenia żadnych dodatkowych opłat. Pola Kontakt i Atmosfera są rozliczane według wyższej stawki. Więcej informacji o naliczaniu opłat za żądania dotyczące danych miejsc znajdziesz w artykule Korzystanie i płatności.

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 wskaźnik prawdopodobieństwa, że dane miejsce jest właściwe. Wyższa wartość oznacza większe prawdopodobieństwo, że dane miejsce jest najlepiej dopasowane. Bufor może być pusty, jeśli nie jest znane miejsce odpowiadające lokalizacji urządzenia.

Poniższy przykładowy kod pobiera listę miejsc, w których urządzenie prawdopodobnie się znajdzie, oraz zapisuje nazwę i 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 na temat wartości prawdopodobieństwa:

  • Prawdopodobieństwo określa względne prawdopodobieństwo, że dane miejsce jest najlepszym dopasowaniem na liście zwróconych miejsc w przypadku danego żądania. Nie możesz porównywać prawdopodobieństwa w przypadku różnych żądań.
  • Wartość prawdopodobieństwa mieści się w przedziale od 0 do 1,0.
  • Suma prawdopodobieństwa w zwróconej tablicy obiektów GMSPlaceLikelihood jest zawsze mniejsza lub równa 1,0. Pamiętaj, że suma nie musi wynosić 1,0.

Aby na przykład przedstawić prawdopodobieństwo 55%, że prawidłowe miejsce to miejsce A, a prawdopodobieństwo, że jest to miejsce B, wynosi 35%, tablica prawdopodobieństwa ma 2 elementy: Miejsce A z prawdopodobieństwem 0,55 i 35% z prawdopodobieństwem wynoszącym 0,35.

Wyświetlanie atrybucji w aplikacji

Gdy aplikacja wyświetla informacje uzyskane ze strony GMSPlacesClient findPlaceLikelihoodsFromCurrentLocationWithPlaceFields:, musi też wyświetlać atrybucje. Dowiedz się więcej o atrybucjach.