【发布时间】:2014-06-02 14:21:50
【问题描述】:
我正在为我的 rails 应用程序中的 infowindows 关闭操作而苦苦挣扎。
我的js:
<script type="text/javascript">
$(document).ready(function(){
var raw_markers = <%=raw @hash.to_json %>;
function createSidebarLi(json){
return json.sidebar;
//return ("<li>" + json.titre + ' ' + json.address + "</li>");
};
function bindLiToMarker($li, marker){
$li.on('click', function(){
handler.getMap().setZoom(14);
marker.setMap(handler.getMap()); //because clusterer removes map property from marker
marker.panTo();
google.maps.event.trigger(marker.getServiceObject(), 'click');
});
};
function bindLiToMarkerMouseOver($li, marker){
$li.on('mouseover', function(){
handler.getMap().setZoom(14);
marker.setMap(handler.getMap()); //because clusterer removes map property from marker
marker.panTo();
google.maps.event.trigger(marker.getServiceObject(), 'click');
//marker.serviceObject.setIcon("/assets/marker_sprite.png");
});
};
function createSidebar(json_array){
_.each(json_array, function(json){
var $li = $( createSidebarLi(json) );
$li.appendTo('#markers_list');
bindLiToMarker($li, json.marker);
bindLiToMarkerMouseOver($li, json.marker);
});
};
//handler = Gmaps.build('Google', { builders: { Marker: InfoBoxBuilder} });
handler = Gmaps.build('Google');
handler.buildMap({ internal: {id: 'map'}}, function(){
var markers = handler.addMarkers(raw_markers);
_.each(raw_markers, function(json, index){
var marker = markers[index];
json.marker = marker;
//google.maps.event.addListener(marker.getServiceObject(), 'mouseover', function(){
//google.maps.event.trigger(marker.getServiceObject(), 'click');
//});
});
google.maps.event.addListener(map, "click", function(){
closeInfoWindow();
});
createSidebar(raw_markers);
handler.bounds.extendWith(markers);
handler.fitMapToBounds();
});
});
</script>
如果用户点击地图,我会调用 gmap 事件来关闭它们,但它不起作用。 我想我必须改变我打电话的地方,但我不确定,我到处都试过了。
有人有想法吗?
ps:我用的是Gmaps4rails,但是一般跟js没有关系。
【问题讨论】:
-
我在您的代码中没有看到名为 closeInfoWindow 的函数。
-
google.maps.event.addListener(map, "click", function(){ closeInfoWindow(); });在脚本的末尾
-
OK 所以它的作用是将函数与地图的点击事件联系起来。该函数调用closeInfoWindow。但是我在任何地方都没有看到这个定义。
-
this: //google.maps.event.addListener(marker.getServiceObject(), 'mouseover', function(){ //google.maps.event.trigger(marker.getServiceObject(), '点击'); //});效果很好,也没有定义。我应该在哪里定义它?感谢您的帮助。
-
也不确定您的信息窗口在哪里打开。也许this post 可以帮忙:
标签: javascript google-maps ruby-on-rails-4 gmaps4rails