我正在尝试设置一个 Google map ,该 map 将在单击链接时显示,然后在单击另一个链接时隐藏。一切正常,除了当我从 display:none 显示 map 时,它没有正确显示。
我读到了有关使用 google.maps.event.trigger(map, 'resize');但我对 Javascript 和 JQuery 不够熟练,不知道如何添加它。
这是我一直在使用的代码:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 TRANSITIONAL//EN">
<html>
<head>
<title></title>
<style type="text/css">
#viewmap {
position:relative;
width:944px;
float:left;
display:none;
}
#hidemap {
position:relative;
width:944px;
float:left;
display:block;
}
#map_canvas {
position:relative;
float:left;
width:944px;
height:300px;
}
</style>
<script type="text/javascript"
src="http://maps.google.com/maps/api/js?v=3.2&sensor=false">
</script>
<script type="text/javascript">
function initialize() {
var latlng = new google.maps.LatLng(-27.999673,153.42855);
var myOptions = {
zoom: 15,
center: latlng,
mapTypeId: google.maps.MapTypeId.ROADMAP,
mapTypeControl: true,
mapTypeControlOptions: {
style: google.maps.MapTypeControlStyle.DROPDOWN_MENU
}
};
var map = new google.maps.Map(document.getElementById("map_canvas"),myOptions);
var contentString = 'blah';
var infowindow = new google.maps.InfoWindow({
content: contentString
});
var marker = new google.maps.Marker({
position: latlng,
map: map
});
google.maps.event.addListener(marker, 'click', function() {
infowindow.open(map,marker);
});
}
google.maps.event.addDomListener(window, 'load', initialize);
</script>
<script type="text/javascript">
function toggleDiv1(viewmap){
if(document.getElementById(viewmap).style.display == 'block'){
document.getElementById(viewmap).style.display = 'none';
}else{
document.getElementById(viewmap).style.display = 'block';
}
}
function toggleDiv2(hidemap){
if(document.getElementById(hidemap).style.display == 'none'){
document.getElementById(hidemap).style.display = 'block';
}else{
document.getElementById(hidemap).style.display = 'none';
}
}
</script>
</head>
<body>
<div id="viewmap">
<a href="#" onmousedown="toggleDiv1('viewmap'); toggleDiv2('hidemap');">Hide map</a>
<div id="map_canvas"></div>
</div>
<div id="hidemap">
<a href="#" onmousedown="toggleDiv1('viewmap'); toggleDiv2('hidemap');">View map</a>
</div>
</body>
</html>
任何帮助将不胜感激,
昆汀
最佳答案
我今天遇到了同样的问题,最终在官方Google Maps Javascript API V3 Reference找到了这个问题:
Developers should trigger this event on the map when the div changes size:
google.maps.event.trigger(map, 'resize')
.
作为display:none
相当于离开<div>
大小为 0,将其更改为 display:block
实际上变成了大小的变化,因此有必要触发 map 调整大小事件。
对我来说就像一个魅力。
2018-05-22 更新
随着 Maps JavaScript API 3.32 版中新渲染器的发布,调整大小事件不再是 Map
的一部分。类。
文档说明
When the map is resized, the map center is fixed
The full-screen control now preserves center.
There is no longer any need to trigger the resize event manually.
来源:https://developers.google.com/maps/documentation/javascript/new-renderer
google.maps.event.trigger(map, "resize");
从 3.32 版本开始没有任何影响
关于javascript - 谷歌地图显示 :None Problem,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4700594/