Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/409.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 谷歌地图-点击地图时关闭信息窗口_Javascript_Google Maps_Ruby On Rails 4_Gmaps4rails - Fatal编程技术网

Javascript 谷歌地图-点击地图时关闭信息窗口

Javascript 谷歌地图-点击地图时关闭信息窗口,javascript,google-maps,ruby-on-rails-4,gmaps4rails,Javascript,Google Maps,Ruby On Rails 4,Gmaps4rails,我正在努力在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&

我正在努力在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>

$(文档).ready(函数(){
var raw_标记=;
函数createSidebarLi(json){
返回json.sidebar;
//返回(“
  • ”+json.titre+”+json.address+”
  • ”; }; 函数bindLiToMarker($li,marker){ $li.on('click',function(){ handler.getMap().setZoom(14); marker.setMap(handler.getMap());//因为cluster从marker中删除map属性 marker.panTo(); google.maps.event.trigger(marker.getServiceObject(),'click'); }); }; 函数bindLiToMarkerMouseOver($li,marker){ $li.on('mouseover',function(){ handler.getMap().setZoom(14); marker.setMap(handler.getMap());//因为cluster从marker中删除map属性 marker.panTo(); google.maps.event.trigger(marker.getServiceObject(),'click'); //marker.serviceObject.setIcon(“/assets/marker_sprite.png”); }); }; 函数createSidebar(json_数组){ _.each(json_数组、函数(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'); buildMap({internal:{id:'map'}},function(){ var markers=handler.addMarkers(原始标记); _.each(原始标记、函数(json、索引){ var标记=标记[索引]; json.marker=marker; //google.maps.event.addListener(marker.getServiceObject(),'mouseover',function()){ //google.maps.event.trigger(marker.getServiceObject(),'click'); //}); }); google.maps.event.addListener(映射,“单击”,函数(){ 关闭信息窗口(); }); createSidebar(原始_标记); handler.bounds.extendWith(markers); handler.fitMapToBounds(); }); });
    如果用户点击地图但不起作用,我会调用gmap事件来关闭它们。 我想我必须改变我打电话的地方,但我不确定,我到处都试过了

    有人有主意吗

    ps:我使用的是Gmaps4rails,但它通常与js无关。

    声明函数:

    function closeInfoWindow(handler){
      if(handler.currentInfowindow()) {
        handler.currentInfowindow().close();
      }
    }
    
    并称之为:

    closeInfoWindow(handler);
    

    我在代码中没有看到名为closeInfoWindow的函数。google.maps.event.addListener(映射,“单击”,函数(){closeInfoWindow();});在scriptOK的末尾,这样做是将函数绑定到映射的click事件。该函数调用closeInfoWindow。但是我在任何地方都看不到定义了它。this://google.maps.event.addListener(marker.getServiceObject(),'mouseover',function(){//google.maps.event.trigger(marker.getServiceObject(),'click');//});效果很好,也没有定义。我应该在哪里定义它?谢谢你的帮助。也不知道你的信息窗口在哪里打开。也许能帮上忙:谢谢你的帮助。我想我的听众也不管用。google.maps.event.addListener(Gmaps.map.serviceObject,'click',function(){closeInfoWindow(handler);});是否正确?可以通过处理程序.getMap()访问映射对象,请阅读文档