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

时间:2015-07-30 10:27:50

标签: javascript google-maps google-maps-api-3

我写了以下代码:

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)
   }
}

代码工作正常。使用此代码,我必须单击标记才能看到内容。但是我需要在加载地图并指向标记时默认加载标记内容(没有任何点击或悬停)。

另一件事,如果我们设置标记仍设置为可见性“假”,它会显示标记内容。如何设置它的可见性? 请在JavaScript中提出建议。

1 个答案:

答案 0 :(得分:1)

只需删除infowindow的事件监听器,只需在创建它时立即打开它。

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();
   }
}