0

我的要求是在标记上添加一个 onclik 监听器。我的观点如下

<div class="map-wrapper">
  <div id="map_div" style=" height: 800px;"></div>
</div>

<script src="//maps.google.com/maps/api/js?v=3.13&amp;sensor=false&amp;libraries=geometry" type="text/javascript"></script>
<script src='//google-maps-utility-library-v3.googlecode.com/svn/tags/markerclustererplus/2.0.14/src/markerclusterer_packed.js' type='text/javascript'></script>

<script>

handler = Gmaps.build('Google', { markers: { maxRandomDistance: null } });

var mapOptions = { mapTypeId: google.maps.MapTypeId.SATELLITE };
handler.buildMap({ provider: mapOptions,  internal: {id: 'map_div'}}, function(){
 markers = handler.addMarkers(<%=raw @hash.to_json %>);

 handler.bounds.extendWith(markers);
 handler.fitMapToBounds();
  handler.getMap().setZoom(19);

});



</script>
<% content_for :scripts do %>
<script type="text/javascript">
Gmaps.map.callback = function(){
  for(var i = 0; i < Gmaps.map.markers.length; i++){
    marker = Gmaps.map.markers[i];
    google.maps.event.addListener(marker.serviceObject, 'click',  (function(marker){return function(){alert(marker.id);}})(marker))
 }
}

</script>
<% end %>

但是当看起来回调函数没有被调用时。我在这里或布局 application.html.erb 中是否遗漏了什么。在 application.html.erb 我放

 <%= yield %>
<%= yield :scripts %>

我的控制器代码如下

 def index
    @sens = Sen.all
@hash = Gmaps4rails.build_markers(@sens) do |sen, marker|
marker.lat sen.latitude
marker.lng sen.longitude
marker.picture({"url" =>"/images/red_bl.gif","width" => 36, "height" => 36 })

结束 logger.info @hash 结束

rails 版本是 4.0.2 ruby​​ 1.9.3 'gmaps4rails', '2.1.1'

4

1 回答 1

0

Gmaps.map.callback不是 v2.x 中的现有方法。

如果您需要回调,只需在之后添加:

markers = handler.addMarkers(<%=raw @hash.to_json %>);

顺便说一句,我建议您使用:

marker.getServiceObject()

<%= yield :scripts %>在 v2.x 中不需要

于 2014-02-10T08:10:27.917 回答