只要点击地图上的标记,下面的代码就会打开一个弹出窗口。它有效:
<script type="text/javascript">
function popup() {
newwindow = window.open('test.php','Test','width=800,height=500');
newwindow.focus();
return false;
}
function addMarker(lat, lng, map){
var latlng = new google.maps.LatLng(lat,lng);
var marker = new google.maps.Marker({
position: latlng,
map: map
});
google.maps.event.addListener(marker, 'click', function() {
popup();
});
}
function initialize() {
var myOptions = {
center: new google.maps.LatLng(47.367633, 8.542557),
zoom: 5,
scrollwheel: true,
mapTypeId: google.maps.MapTypeId.HYBRID,
mapTypeControlOptions:{
style: google.maps.MapTypeControlStyle.DROPDOWN_MENU
},
navigationControlOptions:{
style: google.maps.NavigationControlStyle.SMALL
}
};
var map = new google.maps.Map(document.getElementById("map_canvas"), myOptions);
var jsonData = <?php echo $json; ?>;
for(var i = 0; i < jsonData.length; i += 1){
addMarker(jsonData[i].lat, jsonData[i].lng, map);
}
}
</script>
但是,如果我添加一个标记图标,弹出窗口仍会打开,但它会立即消失在后台,即包含地图的浏览器窗口后面:
function addMarker(lat, lng, map){
var latlng = new google.maps.LatLng(lat,lng);
var marker = new google.maps.Marker({
position: latlng,
icon: 'myicon.png',
map: map
});
google.maps.event.addListener(marker, 'click', function() {
popup();
});
}
这种行为的原因是什么?
答案 0 :(得分:1)
这是一个有趣的问题。看起来它与点击事件后请求焦点的Google Map窗口有关。奇怪的是,只有在使用自定义标记图标时才会发生这种情况。
您可以考虑通过稍微延迟1毫秒启动弹出窗口来解决此问题。在Firefox 3.6.3上测试过它似乎解决了你的问题:
function popup() {
setTimeout(function () {
var newwindow = window.open('test.php','Test','width=800,height=500');
newwindow.focus();
}, 1);
return false;
}
但是,您也可以考虑不使用弹出窗口。许多用户仍然认为他们是邪恶的,你可能最终会与弹出窗口拦截器争夺。