谷歌地图叠加层消息不会保持隐藏状态
Google Maps overlay message won't stay hidden
我有一个地图,里面填充了通过AJAX检索到php服务器调用的标记。在 AJAX 返回中,我遍历每个标记并设置 onClick 侦听器以打开覆盖的映射消息。
一切正常。标记显示,当我单击标记时,消息显示叠加。但是,在我单击以关闭消息,并以任何方式拖动、缩放或更改地图后,消息将重新出现。它只是不会一直隐藏。
我注意到的另一件事是,如果我单击一个标记,然后单击另一个标记,消息将更改为新的标记消息。但是,如果我拖动地图,消息开始在上一个标记和当前标记的消息之间闪烁,直到我停止拖动它并且它稳定到当前标记的消息。我不知道这些问题是否相关。任何建议将不胜感激。谢谢。
//create map
var mapOptions = {
zoom: 3,
center: defaultLatLng,
minZoom: 3,
mapTypeId: google.maps.MapTypeId.ROADMAP
};
var map = new google.maps.Map($("div#map_canvas").get(0), mapOptions);
//send ajax requesting markers
$.ajax({
...
success: function(data) {
$.each(data, function(index, value) {
var markerLat = value.lat;
var markerLng = value.lng;
var marker = new google.maps.Marker({
position: new google.maps.LatLng(markerLat, markerLng),
map: map
});
marker.id = value.id; //set the marker id
var markerListener = google.maps.event.addListener(marker, "click", function(event){
/*****move map position****/
map.setCenter(marker.getPosition());
//send ajax requesting data based on id of marker clicked
$.ajax({
...
success: function(data) {
//actual message
var html = "<a id='close' href='#'>close</a>"
+ "<p>" + data.message + "</p>";
setMapMessage(html, map);
} //end success for markerListener
}); //end ajax for markerListener
}); //end markerListener
}); //end $.each()
} //end success for ajax getting all the markers
}); //end ajax for getting all the markers
function setMapMessage(message, map){
//Create custom message
var overlay = new google.maps.OverlayView();
overlay.draw = function() {
$("#map_message").html(message).show();
$("a#close").click(function(){
$("#map_message").hide();
});
//get the coordinates of the map (used to set X and Y of the map_message)
var mapPosition = $("#map_canvas").position();
var mapContainerX = mapPosition.left;
var mapContainerY = mapPosition.top;
$("#map_message").css({
top: mapContainerY,
left: mapContainerX
});
};
overlay.setMap(map);
}
我终于想出了一个解决方法。我只是将 z 索引设置为 -1。
$("a#close").click(function(){
$("div#map_message").hide().css("z-index", -1);
});
在标记侦听器中,我单击 将 z 索引设置为 5。
var markerListener = google.maps.event.addListener(marker, "click", function(event){
/*****move map position****/
map.setCenter(marker.getPosition());
//send ajax requesting data based on id of marker clicked
$.ajax({
...
success: function(data) {
//actual message
var html = "<a id='close' href='#'>close</a>"
+ "<p>" + data.message + "</p>";
setMapMessage(html, map);
$("div#map_message").css("z-index", 5);
} //end success for markerListener
}); //end ajax for markerListener
}); //end markerListener
相关文章:
- 在mvc应用程序中,在回发时保留最初隐藏的文本框的隐藏或可见状态
- 检查元素是否将状态从隐藏更改为可见
- jQuery隐藏元素在使用CSS显示时保持隐藏状态
- 在表重新加载后,使用setInterval保持表的显示-隐藏状态
- 保持状态打开”;在背景中”;.隐藏,但不要't在Angular UI中离开状态
- 如何使用jQuery检查切换的隐藏状态
- 将表的隐藏状态更改为可见状态>点击TR
- 谷歌地图叠加层消息不会保持隐藏状态
- 浏览器状态栏:隐藏对特定网站的请求地址
- 当鼠标悬停在链接上时,从 href URL 中隐藏状态栏值
- 在iCheck的复选框选中和未选中状态下显示和隐藏另一个复选框
- 使用Phonegap Build隐藏Android中的状态栏
- 如何将 phonegap 2.9.0 更新到 3.0 或在 phonegap 应用程序中隐藏状态栏
- 高图表工具提示溢出处于隐藏状态
- 单击按钮,侧边菜单从隐藏状态滑出
- Division赢得'返回页面javascript后不要保持隐藏状态
- 在Firefox中隐藏状态栏
- 当元素在Javascript中可见时,它会切换回隐藏状态
- 隐藏框在页面加载时保持隐藏状态
- 隐藏输入在应用CSS类时不会保持隐藏状态