【发布时间】:2015-06-21 17:41:28
【问题描述】:
我正在尝试使用地理编码器对模型中的 2 个地址进行地理编码,但我无法让 gem 按我的意愿工作。这是我应用于我的模型的代码:
class Sender < ActiveRecord::Base
validates_presence_of :source_address
validates_presence_of :destination_address
geocoded_by :source_address, :latitude => :latitude1, :longitude => :longitude1
geocoded_by :destination_address, :latitude2 => :latitude2, :longitude2 => :longitude2
def update_coordinates
geocode
[latitude1, longitude1, latitude2, longitude2]
end
after_validation :geocode
这里是views/senders/show.html.erb的代码:
<%= @sender.latitude1 %>
<%= @sender.longitude1 %>
<%= @sender.latitude2 %>
<%= @sender.longitude2 %>
结果:35.6894875 139.6917064 - 不是应该给我发回 2 个地址信息吗?
这是我的js:
<script type="text/javascript">
function initialize() {
var source = new google.maps.LatLng(<%= @sender.latitude1 %>, <%= @sender.longitude1 %>);
var dest = new google.maps.LatLng(<%= @sender.latitude2 %>, <%= @sender.longitude2 %>);
var mapOptions = {
center: source,
zoom: 8
}
var mapOptions2 = {
center: dest,
zoom: 8
}
var map = new google.maps.Map(document.getElementById('map_canvas'), mapOptions);
var map2 = new google.maps.Map(document.getElementById('map_canvas2'), mapOptions2);
var marker = new google.maps.Marker({
position:source,
map: map
});
var marker2 = new google.maps.Marker({
position:dest,
map: map2
});
}
google.maps.event.addDomListener(window, 'load', initialize);
</script>
【问题讨论】:
-
您的
latitude, longitude, latitude2, longitude2是否返回 4 个不同的值? -
只返回结果中显示的纬度、经度值。似乎 geocoded_by :destination_address, :latitude2 => :lat, :longitude2 => :lon 并没有真正起作用..
-
我想如果你想要
Geocoding multiple addresses它需要返回一个地理编码地址的JsonArray,并解析它,参考here
标签: ruby-on-rails google-maps-api-3 geocoding