从Google Maps自定义标记的信息窗口中删除“关闭标题”属性

时间:2019-03-30 15:29:51

标签: jquery google-maps

我正在尝试找出如何删除此图像右上角的“关闭”一词:

enter image description here

我发现我可以运行此jQuery命令并且可以运行,但前提是在窗口打开后运行该命令:

            jQuery(".gm-ui-hover-effect").attr('title', '');

这个问题是,如果我将其放在信息窗口的点击监听器中,它似乎不起作用:

    function bindInfoWindow(marker, map, infowindow, html) {
        google.maps.event.addListener(marker, 'click', function() {
            infowindow.setContent(html);
            infowindow.open(map, marker);
            jQuery(".gm-ui-hover-effect").attr('title', '');
        });
    }

我愿意用CSS / JS /任何东西将其隐藏,但是经过2天的搜索,我无法为此找到解决方案(并且由于某些原因,我的Chrome并未取消格式化缩小的代码的格式,因此事实证明跟踪非常有效)困难,但这是另一个问题。

有人对如何隐藏它有任何想法吗?

1 个答案:

答案 0 :(得分:1)

使用domready上的InfoWindow事件来运行该功能以删除标题。

来自the documentation

  

准备就绪
  函数()
  参数:无
  当包含InfoWindow的内容附加到DOM时,将引发此事件。 如果您动态构建信息窗口内容,则可能希望监视此事件

function bindInfoWindow(marker, map, infowindow, html) {
    google.maps.event.addListener(marker, 'click', function() {
        infowindow.setContent(html);
        infowindow.open(map, marker);
        google.maps.event.addListener(infowindow, 'domready', function() {
          jQuery(".gm-ui-hover-effect").attr('title', '');
        });
    });
}

proof of concept fiddle

代码段:

function initMap() {
  var uluru = {
    lat: -25.363,
    lng: 131.044
  };
  var map = new google.maps.Map(document.getElementById('map'), {
    zoom: 4,
    center: uluru
  });

  var contentString = '<div id="content">' +
    '<div id="siteNotice">' +
    '</div>' +
    '<h1 id="firstHeading" class="firstHeading">Uluru</h1>' +
    '<div id="bodyContent">' +
    '<p>some content</p>' +
    '</div>' +
    '</div>';

  var infowindow = new google.maps.InfoWindow({
    content: contentString
  });

  var marker = new google.maps.Marker({
    position: uluru,
    map: map,
    title: 'Uluru (Ayers Rock)'
  });
  marker.addListener('click', function() {
    console.log("open infowindow");
    infowindow.open(map, marker);
    google.maps.event.addListener(infowindow, 'domready', function() {
      console.log("remove title")
      jQuery(".gm-ui-hover-effect").attr('title', '');
    });
  });
}
html,
body,
#map {
  height: 100%;
  margin: 0;
  padding: 0;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div id="map"></div>
<!-- Replace the value of the key parameter with your own API key. -->
<script async defer src="https://maps.googleapis.com/maps/api/js?key=AIzaSyCkUOdZ5y7hMm0yrcCQoCvLwzdM6M8s5qk&callback=initMap"></script>