作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我注意到 InfoWindow 上的 closeclick
事件在 Google Maps V3 中显示 InfoWindow 之前被调用。有没有其他人看过这个?漏洞?我对设计的误解?
考虑一个简单的例子:
<html>
<head>
<meta name="viewport" content="initial-scale=1.0, user-scalable=no" />
<style type="text/css">
html { height: 100% }
body { height: 100%; margin: 0px; padding: 0px }
#map_canvas {
}
</style>
<script type="text/javascript"
src="http://maps.google.com/maps/api/js?sensor=false"
>
</script>
<script type="text/javascript">
function initialize()
{
var newLatLng = new google.maps.LatLng(47.620513,-122.33963);
var myOptions = { zoom: 12,
center: newLatLng,
draggingCursor: 'pointer',
draggableCursor: 'default',
mapTypeId: google.maps.MapTypeId.ROADMAP
};
map = new google.maps.Map( document.getElementById("map_canvas"),
myOptions);
google.maps.event.addListener(map, 'click', function(event) {
placeMarker(event.latLng);
});
}
function placeMarker(location)
{
// Create new marker
var marker = new google.maps.Marker({
position: location,
map: map
});
map.panTo(location);
markerWindow(marker);
}
// Prompt new event marker form
function markerWindow(marker)
{
var infoHtml = "testing";
var infoW = new google.maps.InfoWindow({});
infoW.setContent(infoHtml);
google.maps.event.addListener(infoW, 'closeclick', closeMarker());
infoW.open(map, marker);
}
function closeMarker()
{
window.alert("closeclick fired");
}
</script>
</head>
<body onload='initialize()'>
<div id="map_canvas" style=" position:absolute;
width:400px;
height:400px;"
>
</div>
</body>
</html>
如果您运行此示例,closeclick
将在显示信息窗口之前被调用,而不是在它创建之后以及在按下信息窗口气泡右上角的“x”按钮时调用.这是一个错误(他们的还是我的)还是我误解了设计/使用?
环境:Windows Vista(32 位)、Firefox 3.6.10
最佳答案
猜想你自己可能已经解决了这个问题,但其他人也有同样的问题。尝试将函数作为引用传递。所以不要这样:
google.maps.event.addListener(infoW, 'closeclick', closeMarker());
这样做:
google.maps.event.addListener(infoW, 'closeclick', closeMarker);
请注意,您的代码类似于:
google.maps.event.addListener(map, 'click', function(event) {
placeMarker(event.latLng);
});
但匿名的function(event)
是一种特殊情况,“允许”在函数名后使用()。
关于javascript - GoogleMaps V3 中的InfoWindow closeclick 事件被触发得太早了?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3947950/
每当用户旋转手机时,我都需要读取 DIV 的像素宽度。在 iOS 上,以下代码将在方向完成后打印出 DIV 的宽度。但是,在 Android 上,代码将在方向开始之前打印出 DIV 的宽度。 HTML
我的网站正在使用jquery.load()在页面的一大块上进行导航。我真的很欣赏只包含加载内容的特定部分的能力,这里是 id="content"的 div: $(frame_selector).loa
我是一名优秀的程序员,十分优秀!