2017-02-03 42 views
1

對於我正在構建的應用程序,我想實現一項功能,允許用戶指定葡萄酒的地理起源(國家(如法國) ,地區(如波爾多),次地區(如保拉克))。MapKit定義所需的搜索結果類型(國家,城市,地區等)

我想確保我不必自己添加所有可用的國家,並且所有進入數據庫的信息都是有效的。因此,我決定做它,如下所示:

  1. 用戶增添了新酒,和類型,同時在蘋果地圖數據庫
  2. 結果輸入,應用程序搜索它來自
  3. 國家的名字從此搜索獲取建議,當用戶點擊某個建議時,該應用會創建一個包含所有相關信息的Country對象。當這樣的物體存在時,酒車只能被保存

這工作正常,除了一件事:蘋果地圖從任何地方返回任何東西,如餐館,商店等等。

我的問題:如何指定我在找什麼?我只能指定我正在搜索的區域,這與我的情況無關。我希望能夠告訴蘋果地圖只查找國家,地區,城市,無論如何。這是可能的嗎?我已經用盡了谷歌,迄今沒有發現。

回答

2

我與MapKit工作,不相信對方輸入我找到了最好的解決辦法是,你可以做用戶的條目自動完成援助Google Place API autocomplete

的iOS現在提供發送格式正確時收到地理座標地址,或者您可以在發送一對座標時收到地址。或地點名稱或座標的興趣點。

1

在iOS 9.3中有一個類添加到MapKit中,名爲MKLocalSearchCompleter,它有助於自動完成。您可以過濾使用'MKSearchCompletionFilterType'返回的內容,但這不是最廣泛的,可能無法完全幫助您的情況。它確實會將城市和國家作爲結果返回,但當我使用它時它也會返回業務。

一種可能的選擇是在應用程序端再次過濾返回的結果,並排除其中包含數字字符的所有結果。

func setupCompleter() { 
    self.searchCompleter = MKLocalSearchCompleter() 
    self.searchCompleter?.delegate = self 
    self.searchCompleter?.filterType = .locationsOnly 
    self.searchCompleter?.queryFragment = "Bordeaux" 
} 

func completerDidUpdateResults(_ completer: MKLocalSearchCompleter) { 
    print("Results \(completer.results)") 

    // Do additional filtering on results here 
} 
1

除了艾倫的回答中,我發現,如果你用MkLocalSearchCompletion對象的字幕屬性過濾器,您可以刪除的業務項。

相關問題