gpt4 book ai didi

ruby-on-rails - Google Maps 和 Rails - 如何从 Ruby 模型构建位置数据

转载 作者:太空宇宙 更新时间:2023-11-03 16:28:09 25 4
gpt4 key购买 nike

我正在尝试在没有 gmaps4rails gem 的情况下使用 Google Maps API。

这是一个普通的应用程序,其中模型的每个实例都是一个标记,我希望每个标记都有自己的信息窗口。

这部分代码存在问题:

var locations = [];
<% @listings.each do |l| %>
locations.push([<%=raw l.latitude%>, <%=raw l.longitude %>]);
<% end %>

代码按原样工作,但是当我尝试调用不是数字的第三个对象(例如 <%=raw l.title %> )时, map 根本不会加载。此外,Ruby 中的任何文本都不会加载 - 比如 <%=raw "text" %><%= "text" %>同时 <%= 2 %>确实有效。

我怎样才能超越这个问题并调用 ruby​​ 模型来构建一个信息窗口?是JSON吗?如果是这样,我会使用它吗?

提前致谢,蒂亚戈

部分 map :

<script type="text/javascript">

function initialize() {
var mapOptions = {
center: new google.maps.LatLng(1.3, 103.85),
zoom: 12,
disableDefaultUI: true,
zoomControl:true
};

var locations = [];
<% @listings.each do |l| %>
locations.push([<%=raw l.latitude%>, <%=raw l.longitude %>]);
<% end %>

var map = new google.maps.Map(document.getElementById("index-map-canvas"),
mapOptions);

var infowindow = new google.maps.InfoWindow();

var marker, i;

for (i = 0; i < locations.length; i++) {
marker = new google.maps.Marker({
position: new google.maps.LatLng(locations[i][0], locations[i][1]),
map: map
});


google.maps.event.addListener(marker, 'click', (function(marker, i) {
return function() {
infowindow.setContent("<div>"+locations[i][2]+"</div>");
infowindow.open(map, marker);
}
})(marker, i));

};

}
google.maps.event.addDomListener(window, 'load', initialize);
</script>

Controller :

def index
@q = Listing.search(params[:q])
@listings = @q.result(distinct: true).paginate(:page => params[:page], :per_page => 10)
end

最佳答案

替换:

    var locations = [];
<% @listings.each do |l| %>
locations.push([<%=raw l.latitude%>, <%=raw l.longitude %>]);
<% end %>

与:

    var locations = <%= raw @listings.to_json %>;

关于ruby-on-rails - Google Maps 和 Rails - 如何从 Ruby 模型构建位置数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20923424/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com