簡體   English   中英

如何在Rails應用程序的Google Maps Autocomplete中解決此問題?

[英]How do I resolve this issue in Google Maps Autocomplete in my Rails app?

我正在為出租車預訂平台創建Rails應用程序,該應用程序需要輸入接機點和下車點。 為此,我已在header.tag中的application.html.erb中包含以下腳本:

<script type="text/javascript" src="http://maps.google.com/maps/api/js?sensor=true&libraries=places"></script>
<script type="text/javascript">
  var placeSearch,autocomplete;
  function initialize() {
    autocomplete = new google.maps.places.Autocomplete(document.getElementById('autocomplete'), { types: [ 'geocode' ] });
    google.maps.event.addListener(autocomplete, 'place_changed', function() {
      fillInAddress();
    });

    autocomplete2 = new google.maps.places.Autocomplete(document.getElementById('autocomplete2'), { types: [ 'geocode' ] });
    google.maps.event.addListener(autocomplete2, 'place_changed', function() {
      fillInAddress();
});
  }
  function fillInAddress() {
    var place = autocomplete.getPlace();

    for (var component in component_form) {
      document.getElementById(component).value = "";
      document.getElementById(component).disabled = false;
    }

    for (var j = 0; j < place.address_components.length; j++) {
      var att = place.address_components[j].types[0];
      if (component_form[att]) {
        var val = place.address_components[j][component_form[att]];
        document.getElementById(att).value = val;
      }
    }
  }
</script>

然后,我在標簽中使用了以下js:

<div class="field">
    <%= label_tag ("Pickup Location: ") %><br>
    <%= text_field_tag :pickup_loc, nil, :id => "autocomplete", :placeholder => "Enter your pickup location" %>
  </div>
  <div class="field">
    <%= label_tag ("Drop Location: ") %><br>
    <%= text_field_tag :drop_loc, nil, :id => "autocomplete2", :placeholder => "Enter your dropoff location" %>
  </div>

盡管自動完成功能似乎可以正常工作,但自動完成功能的結果似乎只是Google Maps提供的結果的一部分。 例如,當我在應用程序中輸入“ Asian GPR ...”作為搜索查詢時,它沒有顯示Asian GPR Multiplex作為選項:

在此處輸入圖片說明

但是,當我在Google Maps中使用相同的查詢字符串時,會得到所需的結果:

在此處輸入圖片說明

我已經嘗試了很多搜索,但是找不到解決方案。 我要去哪里錯了?

如果您在此處閱讀文檔,它會顯示:

類型數組指定顯式類型或類型集合,如下面支持的類型中所列。 如果未指定任何內容,則返回所有類型。 通常,只允許使用一種類型。 唯一的例外是您可以安全地混合地理編碼和營業地點類型,但是請注意,這與不指定任何類型的效果相同。

所以我想您只需要刪除type選項,如下所示:

function initialize() {
    autocomplete = new google.maps.places.Autocomplete(document.getElementById('autocomplete'));
    google.maps.event.addListener(autocomplete, 'place_changed', function() {
      fillInAddress();
    });

    autocomplete2 = new google.maps.places.Autocomplete(document.getElementById('autocomplete2'));
    google.maps.event.addListener(autocomplete2, 'place_changed', function() {
      fillInAddress();
});

或者您可以添加場所類型:

    function initialize() {
    autocomplete = new google.maps.places.Autocomplete(document.getElementById('autocomplete'), { types: [ 'geocode', 'establishment' ] });
    google.maps.event.addListener(autocomplete, 'place_changed', function() {
      fillInAddress();
    });

    autocomplete2 = new google.maps.places.Autocomplete(document.getElementById('autocomplete2'), { types: [ 'geocode', 'establishment' ] });
    google.maps.event.addListener(autocomplete2, 'place_changed', function() {
      fillInAddress();
});

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM