在表单提交之前实现客户端地理编码不起作用



在我的Rails应用程序中,我希望用户在输入字段中输入地址,然后应用程序应该对其进行地理编码,并在服务器上发送坐标参数。

我为我计算的纬度和经度隐藏了字段。我尝试使用JQuery,这样当用户提交表单时,它可以防止默认操作,执行地理编码逻辑,填充隐藏的输入字段,然后实际提交表单。

问题是我的javascript代码出了问题,因为地理编码不起作用。

这是我的代码:

views/locals/_form.html.erb

<%= form_for @local  do |f| %>
    <%= f.label :address %><br>
    <%= f.text_field :address, placeholder: "City, State or Postal Code"     %>
    <%= f.hidden_field :latitude %>
    <%= f.hidden_field :longitude %>
    <%= f.submit "Add local!", id: "submit_button" %>
<% end %>

assets/javascript/locals.js:

$( document ).ready(function() {
    $(function() {
    $('#new_local').click(function(e){
        e.preventDefault();
        var address_to_geocode = document.getElementById('local_address').value();
        var geocoder = new google.maps.Geocoder();
        geocoder.geocode({address: address_to_geocode },     function(results, status) {
            var coordinates = results[0].geometry.location;
            $("#local_latitude").val( coordinates.lat() );
            $("#local_longitude").val( coordinates.lng() );
        });
        $('#new_local').submit();
        })
    })
});

我的API密钥包含在application.html.erb中。
位置控制器允许使用纬度和经度。

有人看到错误在哪里吗?

也许您应该尝试地理完成或者,如果您想将地址保存到类似lat/lon的数据库,请使用地理编码器gem

geocoded_by :full_street_address # can also be an IP address after_validation :geocode # auto-fetch coordinates

相关内容

  • 没有找到相关文章

最新更新