2012-11-08 44 views
4

https://google-developers.appspot.com/maps/documentation/javascript/examples/places-autocomplete谷歌地方自動填充從結果

取出州和國家我有類似上述谷歌的地方自動完成演示網址,由此,如果我輸入白金漢宮的頁面。它將返回的結果

  1. 白金漢宮路,倫敦,英國
  2. 白金漢宮店,白金漢宮路,維多利亞,倫敦, 英國

等我如何刪除倫敦,英國的結果?

+0

我寫了[關於這個問題的博客文章(http://rustamagasanov.com/blog/2014/09/04/google-places-limit-autocomplete-results-to-cities-only/ ),它可能會有所幫助。 –

回答

0

如果不手動處理結果,這是不可能的。如果您認爲這將是一個有用的功能,請提交Places API - Feature Request

+0

好的,在那裏增加了功能請求。謝謝。 – user1809157

1

看來谷歌沒有興趣在短期內整理出來。我不得不求助於以下,可能是足以滿足別人的需要,以及:

document.addEventListener('DOMNodeInserted', function(event) { 
    var target = $(event.target); 
    if (target.hasClass('pac-item')) { 
     target.html(target.html().replace(/, Australia<\/span>$/, "</span>")); 
    } 
}); 

注意pac-item是每一個建議使用的類。有關其他使用的類別,請參閱Google Reference。具有pac-container類的容器似乎在未顯示項目時丟棄項目,並在顯示時添加新項目,因此如果將這些pac-items添加到DOM中,則意味着有建議正在顯示並且pac-container即將變爲可見。

剛剛完成了這項改進。

這也不是一個完整的解決方案。在刪除國家/地區時選擇建議時,自動完成功能仍會將該國家添加到地理編碼中! place_changed現在已經太晚了,因此請僅將上述解決方案視爲答案的一部分。一旦我找出剩下的部分,我會再次更新。

---更新

個人而言,我結束了不使用谷歌的自動完成功能在所有因爲一旦選擇了修改建議,我找不到各地仍顯示,該國的自動完成的問題的方法。更有用的方法是使用twitter typeahead,並使用google API獲取建議。這給了我更多的控制建議,但顯然需要更多的手動工作來彌補丟失的功能

1

這是我如何使它與jQuery自動完成工作。希望它能幫助別人。

$("#Search").autocomplete({ 
     source: function (request, response) { 
      var options = { 
       input: request.term, 
       types: ['(cities)'], 
       region: 'US', 
       componentRestrictions: { country: "us" } 
      }; 
      function callback(predictions, status) { 
       for (var i = 0, prediction; prediction = predictions[i]; i++) { 
        results.push(prediction.description.replace(/, United States$/, "")); 
       } 
       response(results); 
      } 
      var service = new google.maps.places.AutocompleteService(); 
      service.getPlacePredictions(options, callback); 
      var results = []; 
     } 
    });