2017-09-17 57 views
1

如何調用已經被初始化的函數? 我有一個搜索欄搜索特定的單詞,如果它找到它,它會更改一個特定的值。如何在另一個內部調用函數?

var mover: String! 
@IBOutlet weak var searchBar: UISearchBar! 

func locationManager(_ manager: CLLocationManager, didUpdateLocations locations: [CLLocation]) 
{ 
    let camera = GMSCameraPosition.camera(withLatitude: latPass, longitude: longPass, zoom: 5) 
    let mapView = GMSMapView.map(withFrame: CGRect.zero, camera: camera) 
    view = mapView 

} 

我希望我的camera根據我searchBar.text

func searchBarSearchButtonClicked(_ searchBar: UISearchBar) { 
    print(searchBar.text!) 

    if searchBar.text!=="test"{ 
     mover="test" 

    } 
} 

mover值改變改變價值,但如何刷新攝像機視圖,因此動畫播放至特定的座標。

回答

1

我覺得是不錯的辦法instaciating每次你CLLocationManager給一些有效的位置,同時在您目前的實施時間你的MapView,你必須添加一個標誌變量來執行你的didUpdateLocations一次

代碼裏面的代碼

var mover: String! 
var positionWasUpdated : Bool = false 
@IBOutlet weak var searchBar: UISearchBar! 

func locationManager(_ manager: CLLocationManager, didUpdateLocations locations: [CLLocation]) 
{ 
    guard !positionWasUpdated else{ 
     return 
    } 

    let camera = GMSCameraPosition.camera(withLatitude: latPass, longitude: longPass, zoom: 5) 
    let mapView = GMSMapView.map(withFrame: CGRect.zero, camera: camera) 
    view = mapView 

} 

之後,當searchBar文字是「test」,可以用.animate(to:)方法地圖動畫到新的所需位置

代碼

func searchBarSearchButtonClicked(_ searchBar: UISearchBar) { 
    print(searchBar.text!) 

    if searchBar.text!=="test"{ 
     mover="test" 
     if let mapView = self.view as? GMSMapView 
     { 
      mapView.animate(to: GMSCameraPosition.camera(withLatitude: yourDesiredLatitude, 
                 longitude: yourDesiredLongitude, zoom: 15.0)) 
     } 
    } 
} 
+0

我想要的緯度和長在'的LocationManager()' –

+0

我不明白,你當前的代碼移動始終將地圖由你CLLocationManager報告的位置,你有什麼去做?你能解釋一下嗎? –

+0

有沒有一種方法可以在我的'searchBarSearchButtonClicked'中訪問'locationManager()'的緯度和經度? –

相關問題