2016-12-13 10 views
0

Я использую карты Google, которые показывают текущее местоположение, а также пользователь, который может искать и выбирать из автозаполненных мест предложений на этой карте. Следующее, что я хотел бы, это позволить пользователю получить направление от своего текущего местоположения до маркера, который они выбирают, и нажать. Любые предложения о том, как я это реализую? Я загрузил GoogleDirectionsAPI, но я смущен, что дальше ... Я видел код, который вмещает определенное место или координаты, тогда как я хочу, чтобы там не было назначенного адресата, но независимо от того, какой пункт назначения создан автозаполнением.Google для автозаполнения поиска Swift

Благодаря

мой код для автозаполнения Google Maps поиска:

func viewController(_ viewController: GMSAutocompleteViewController, didAutocompleteWith place: GMSPlace) { 

     let camera = GMSCameraPosition.camera(withLatitude: place.coordinate.latitude, longitude: place.coordinate.longitude, zoom: 15.0) 
     self.vwGMap.camera = camera 
     let marker = GMSMarker() 
     marker.position = CLLocationCoordinate2DMake(place.coordinate.latitude, place.coordinate.longitude) 
     marker.title = place.name 
     marker.snippet = place.formattedAddress 
     marker.map = self.vwGMap 
     marker.icon = GMSMarker.markerImage(with: UIColor.blue) 
     marker.tracksViewChanges = true 
     self.dismiss(animated: true, completion: nil) 
     print("Place name: ", place.name) 
     print("Place address: ", place.formattedAddress) 
     print("Place placeID: ", place.placeID) 
     print("Place attributions: ", place.attributions) 
     print("Place Coordinate:", place.coordinate) 
     //The printing only happens in the terminal 
     let newPlace = StoredPlace(name: place.name, address: place.formattedAddress!, placeID: place.placeID) 
     storedPlaces.append(newPlace) 

} 



    func viewController(_ viewcontroller: GMSAutocompleteViewController, didFailAutocompleteWithError error: Error) { 
     print("ERROR AUTO COMPLETE \(error)") 
    } 

    func wasCancelled(_ viewController: GMSAutocompleteViewController) { 
     self.dismiss(animated: true, completion: nil) 
    } 

@IBAction func searchWithAddress(_ sender: AnyObject) { 
    let searchWithAddress = GMSAutocompleteViewController() 
    searchWithAddress.delegate = self 
    let filter = GMSAutocompleteFilter() 
    filter.type = .establishment 
    filter.country = "UK" 
    self.locationManager.startUpdatingLocation() 
    self.present(searchWithAddress, animated: true, completion: nil) 

} 

    } 

ответ

0

Я предлагаю вам реализовать API Google для поиска местоположения.

func hitForPlace(searchText:String) 
{ 
     arrPlaceList.removeAll() 
     viewLine.hidden = false 

     let url:NSURL = NSURL(string: "https://maps.googleapis.com/maps/api/place/autocomplete/json?input=\(searchText)&sensor=true&key=\(googleMapApiKey)")! 
     let task = NSURLSession.sharedSession().dataTaskWithURL(url) { (data, response, error) -> Void in 
      do { 
       if data != nil{ 
        let dic = try NSJSONSerialization.JSONObjectWithData(data!, options: NSJSONReadingOptions.MutableLeaves) as! NSDictionary 
        print_debug(dic) 

        for var count = 0;count<dic["predictions"]?.count;count = count+1 
        { 
         self.arrPlaceList.append(dic["predictions"]![count]["description"] as! String) 
        } 

        dispatch_async(dispatch_get_main_queue(), { 
         self.placeTableShow(true) 
         self.tablePlace.reloadData() 
        }); 

       } 
      }catch { 
       print("Error") 
      } 
     } 
     task.resume() 
} 
+0

Спасибо за ваш ответ. У меня уже есть поиск местоположения с помощью виджета Autocomplete в google-местах. но теперь мне нужно реализовать направления, которые, насколько я понимаю, выполняется с помощью googlemapsdirectionsAPI, это правильно? Ill измените мой пост выше, чтобы показать мой код для секции автозаполнения. где я иду отсюда, чтобы получить направление от текущего места до автозаполненного места? –