Всякий раз, когда я ищу адрес на карте Google и геокодирую его, моя карта не добавляет маркер, пока я не запустил поиск во второй раз. Может ли кто-нибудь сказать мне, почему это так? В основном я искал адрес, пропустил его имя в сторонний геокодер и мутировал глобальный маркер, который я создал на карте. Это значит, что у меня есть только один маркер за раз на карте. По какой-то причине, однако, он никогда не помещает маркер в первый раз, когда я ищу адрес, я должен искать другой адрес. Странно то, что он не должен быть одним и тем же адресом, если я введу другой адрес, он просто изменит заголовок маркера, поставив туда, откуда я изначально хотел, чтобы он ушел.Маркер геокодирования на Swift
Мой код:
extension EventCreatorVC: 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)")
Nominatim.getLocation(fromAddress: place.name, completion: {(error, location) -> Void in
let latitude = (location!.latitude as NSString).doubleValue
let longitude = (location!.longitude as NSString).doubleValue
self.locationOfMarker = CLLocationCoordinate2D(latitude: latitude, longitude: longitude)
})
markerPlace(locationOfMarker: locationOfMarker, name: place.name)
}
func markerPlace(locationOfMarker: CLLocationCoordinate2D, name: String) {
marker.position = locationOfMarker
marker.title = name
}
func resultsController(_ resultsController: GMSAutocompleteResultsViewController,
didFailAutocompleteWithError error: Error){
// TODO: handle the error.
print("Error: ", error.localizedDescription)
}
// Turn the network activity indicator on and off again.
func didRequestAutocompletePredictions(forResultsController resultsController: GMSAutocompleteResultsViewController) {
UIApplication.shared.isNetworkActivityIndicatorVisible = true
}
func didUpdateAutocompletePredictions(forResultsController resultsController: GMSAutocompleteResultsViewController) {
UIApplication.shared.isNetworkActivityIndicatorVisible = false
}
}
ставим это место маркера в ваш завершающий обработчик часть. В соответствии с блоком, когда он находит результат, он возвращается к завершению. Так что попробуйте в режиме отладки, я думаю, что сначала начинается маркерная линия, потом идет до конца. –
Простите, я не уверен, что вы имеете в виду. Где я должен поставить линию? – Willstarr
Проверьте мой ответ –