如何在没有任何鼠标事件的情况下默认显示标记内容

How to show marker content by default without any mouse event?

本文关键字:显示 默认 情况下 事件 鼠标 任何      更新时间:2023-09-26

我写了以下代码:

for (var i=1; i < latitude.length; i++) {
    var markerCenter = new google.maps.LatLng(latitude[i],longitude[i]);
    var marker = new google.maps.Marker({
        position: markerCenter,
        animation: google.maps.Animation.BOUNCE
    });
    marker.setMap(map);
    marker.setVisible(visible)
    markers.push(marker);
    addInfoWindow(marker,Location[i]);
}
function addInfoWindow(marker, message) {
    var infoWindow = new google.maps.InfoWindow({
        content: message
    });
    google.maps.event.addListener(marker, 'click', function () {
        infoWindow.open(map, marker);
    });
}

当用户选中或取消选中复选框时,将根据用户的操作设置相应的标记。

function markerVisibility(check_box,lat,lon) {
    var index;
    for (var i = 1; i < latitude.length; i++) {
        if (latitude[i] == lat && longitude[i] == lon) {
            index=i-1;
            break;
        }
    }
   //User selects the check box to see the marker in Google Map
   if (check_box.checked) {
       markers[index].setVisible(true)
        markers[index].setAnimation(google.maps.Animation.BOUNCE); 
   }
    //User unselects the checkbox not to see the marker
   else {
        markers[index].setVisible(false)
   }
}

代码工作正常。有了这段代码,我必须点击标记来查看内容。但是我需要在默认情况下加载标记内容,当它加载地图并指向一个标记时(不需要单击或悬停)。

另一件事,如果我们将标记设置为可见性"false",它仍然显示标记内容。如何设置它的能见度关闭?请在JavaScript中给出建议

只需删除信息窗口的事件侦听器,并在创建后立即打开它。

function addInfoWindow(marker, message) {
    var infoWindow = new google.maps.InfoWindow({
        content: message
    });
    infoWindow.open(map, marker);
}

同样,如果你想在标记的可见性被切换时显示/隐藏该信息窗口,你可以这样做:

function addInfoWindow(marker, message) {
    var infoWindow = new google.maps.InfoWindow({
        content: message
    });
    infoWindow.open(map, marker);
    marker.infowindow = infoWindow;
}
function markerVisibility(check_box,lat,lon) {
    ...
   if (check_box.checked) {
       markers[index].setVisible(true);
       marker.infowindow.open(map, marker);
   }
   else {
        markers[index].setVisible(false);
        marker.infowindow.close();
   }
}