2017-02-18 3 views
0

Я пытаюсь реализовать блок автозаполнения. В этом приложении я хочу показать расстояние с меткой слева в виде таблицы. Я предполагаю, что они используют API автозаполнения мест, но я не знаю, что он показывает расстояние слева в виде таблицы.Как показать расстояние в google place autocomplete iOS

This picture is what I want.

extension ViewController: GMSAutocompleteResultsViewControllerDelegate { 
    func resultsController(_ resultsController: GMSAutocompleteResultsViewController, 
         didAutocompleteWith place: GMSPlace) { 
     searchController?.isActive = false 
     // Do something with the selected place. 
     print("Place name: \(place.name)") 
     print("Place address: \(place.formattedAddress)") 
     print("Place attributions: \(place.attributions)") 

     self.googleMapsView.clear() 

     let position: CLLocationCoordinate2D = CLLocationCoordinate2D(latitude: place.coordinate.latitude, longitude: place.coordinate.longitude) 
     let marker:GMSMarker = GMSMarker(position: position) 

     markerPosition = CLLocation(latitude: marker.position.latitude, longitude: marker.position.longitude) 

     marker.title = place.name 
     marker.appearAnimation = kGMSMarkerAnimationPop 
     marker.icon = GMSMarker.markerImage(with: .red) 
     marker.map = self.googleMapsView 

     self.googleMapsView.camera = GMSCameraPosition.camera(withLatitude: (place.coordinate.latitude), longitude: (place.coordinate.longitude), zoom: 17.0, bearing: 0, viewingAngle: 0) 

     searchController?.searchBar.text = place.name 

     self.dismiss(animated: true, completion: nil) // dismiss after select place 
    } 

    func resultsController(_ resultsController: GMSAutocompleteResultsViewController, 
         didFailAutocompleteWithError error: Error){ 
     // TODO: handle the error. 
     print("Error: ", error.localizedDescription) 
    } 
} 

ответ

0

Вы можете рассчитать расстояние между данной GMSPlace вам текущее местоположение устройства с помощью функции на CLLocation объекта:

func distance(from location: CLLocation) -> CLLocationDistance 

В вашем конкретном примере:

if let currentPosition = self.googleMapsView.myLocation { 
    //returns the distance between two CLLocation objects in meters 
    let distance = markerPosition.distance(from: currentPosition) 
} 

Теперь вы можете c переверните и отформатируйте свой distance тому, что вы хотите.

Или вы можете найти текущее местоположение устройства с помощью CLLocationManager.

+0

Благодарим за ответ. Теперь я могу рассчитать расстояние, но я не могу показать расстояние слева в ячейке Tableview. – DoBeBee

-1

Благодарим вас за ответ. Теперь я могу рассчитать расстояние, но я не могу показать расстояние слева в ячейке Tableview.