Google 地图信息窗口大小不符合预期
Google maps Infowindow doesnt size as expected
我只想显示内容为 The 123456789
的默认信息 window。
所以我正在使用 google 中的地图 example,并更改信息 window 内容。就这么简单。
<!DOCTYPE html>
<html>
<head>
<meta name="viewport" content="initial-scale=1.0, user-scalable=no"><meta charset="utf-8">
<title>Info windows</title>
<style>html, body, #map-canvas {height: 100%;margin: 0px;padding: 0px}</style>
<script src="https://maps.googleapis.com/maps/api/js?v=3.exp"></script>
<script>
function initialize() {
var myLatlng = new google.maps.LatLng(-25.363882,131.044922);
var mapOptions = {zoom: 4,center: myLatlng};
var map = new google.maps.Map(document.getElementById('map-canvas'), mapOptions);
var infowindow = new google.maps.InfoWindow({
content: 'The 123456789'
});
var marker = new google.maps.Marker({
position: myLatlng,
map: map,
title: 'Uluru (Ayers Rock)'
});
google.maps.event.addListener(marker, 'click', function() {
infowindow.open(map,marker);
});
}
google.maps.event.addDomListener(window, 'load', initialize);
</script>
</head><body><div id="map-canvas"></div></body></html>
我在 Firefox 和 Chrome(预计 The 123456789
)中都得到了这个。只有在 IE 中我有想要的结果。其余文本被换行,在 chrome 中滚动条也可见。
现在,根据文档,应该扩展信息窗口以适合我的文本,如果内容比我正在测试的内容稍长,它就会这样做。这是 google 地图样式问题吗?我如何在没有自定义 InfoWindows 且没有骇人听闻的情况下简单地显示该文本 css?
编辑
再次测试了住所代码。第一次显示 infowindo 有问题,接下来的几次都正常显示。
刚刚测试了您的代码,似乎是正确的。
https://www.dropbox.com/s/i1bgvg74chb3hzt/Screenshot%202015-01-10%2017.53.36.png?dl=0
您可以做的一件事是,与其创建充满内容的信息窗口,不如创建实例,然后单击设置内容。
google.maps.event.addListener(marker, 'click', function() {
infowindow.setContent('something');
infowindow.open(map,marker);
});
您可以尝试向信息窗口 'domready' 事件添加侦听器(使用 addListenerOnce),关闭信息窗口,然后重新打开它。
概念验证代码片段:
function initialize() {
var myLatlng = new google.maps.LatLng(-25.363882, 131.044922);
var mapOptions = {
zoom: 4,
center: myLatlng
};
var map = new google.maps.Map(document.getElementById('map-canvas'), mapOptions);
var infowindow = new google.maps.InfoWindow({
content: 'The 123456789'
});
var marker = new google.maps.Marker({
position: myLatlng,
map: map,
title: 'Uluru (Ayers Rock)'
});
google.maps.event.addListener(marker, 'click', function() {
google.maps.event.addListenerOnce(infowindow,'domready',function() {
infowindow.close();
infowindow.open(map,marker);
});
infowindow.open(map, marker);
});
google.maps.event.addListener(map, 'click', function() {
infowindow.close();
});
google.maps.event.trigger(marker,'click');
}
google.maps.event.addDomListener(window, 'load', initialize);
html,
body,
#map-canvas {
height: 100%;
margin: 0px;
padding: 0px
}
<script src="https://maps.googleapis.com/maps/api/js?v=3.exp"></script>
<div id="map-canvas"></div>
您应该将文本放在具有样式的“
”标签中,或者 class 具有样式属性
var infowindow = new google.maps.InfoWindow({
content: '<div style="width: 10em;">The 123456789</div>'
});
尝试添加
style="word-wrap:nospace"
作为内容的一个属性
var infowindow = new google.maps.InfoWindow({
content: '<p style="word-wrap:nospace">'+The 123456789+'</p>'
});
这是由于全局 img
样式。要还原它,我刚刚添加了
.gm-style img { max-width: none; }
感谢此 answer。
我只想显示内容为 The 123456789
的默认信息 window。
所以我正在使用 google 中的地图 example,并更改信息 window 内容。就这么简单。
<!DOCTYPE html>
<html>
<head>
<meta name="viewport" content="initial-scale=1.0, user-scalable=no"><meta charset="utf-8">
<title>Info windows</title>
<style>html, body, #map-canvas {height: 100%;margin: 0px;padding: 0px}</style>
<script src="https://maps.googleapis.com/maps/api/js?v=3.exp"></script>
<script>
function initialize() {
var myLatlng = new google.maps.LatLng(-25.363882,131.044922);
var mapOptions = {zoom: 4,center: myLatlng};
var map = new google.maps.Map(document.getElementById('map-canvas'), mapOptions);
var infowindow = new google.maps.InfoWindow({
content: 'The 123456789'
});
var marker = new google.maps.Marker({
position: myLatlng,
map: map,
title: 'Uluru (Ayers Rock)'
});
google.maps.event.addListener(marker, 'click', function() {
infowindow.open(map,marker);
});
}
google.maps.event.addDomListener(window, 'load', initialize);
</script>
</head><body><div id="map-canvas"></div></body></html>
我在 Firefox 和 Chrome(预计 The 123456789
)中都得到了这个。只有在 IE 中我有想要的结果。其余文本被换行,在 chrome 中滚动条也可见。
现在,根据文档,应该扩展信息窗口以适合我的文本,如果内容比我正在测试的内容稍长,它就会这样做。这是 google 地图样式问题吗?我如何在没有自定义 InfoWindows 且没有骇人听闻的情况下简单地显示该文本 css?
编辑
再次测试了住所代码。第一次显示 infowindo 有问题,接下来的几次都正常显示。
刚刚测试了您的代码,似乎是正确的。
https://www.dropbox.com/s/i1bgvg74chb3hzt/Screenshot%202015-01-10%2017.53.36.png?dl=0
您可以做的一件事是,与其创建充满内容的信息窗口,不如创建实例,然后单击设置内容。
google.maps.event.addListener(marker, 'click', function() {
infowindow.setContent('something');
infowindow.open(map,marker);
});
您可以尝试向信息窗口 'domready' 事件添加侦听器(使用 addListenerOnce),关闭信息窗口,然后重新打开它。
概念验证代码片段:
function initialize() {
var myLatlng = new google.maps.LatLng(-25.363882, 131.044922);
var mapOptions = {
zoom: 4,
center: myLatlng
};
var map = new google.maps.Map(document.getElementById('map-canvas'), mapOptions);
var infowindow = new google.maps.InfoWindow({
content: 'The 123456789'
});
var marker = new google.maps.Marker({
position: myLatlng,
map: map,
title: 'Uluru (Ayers Rock)'
});
google.maps.event.addListener(marker, 'click', function() {
google.maps.event.addListenerOnce(infowindow,'domready',function() {
infowindow.close();
infowindow.open(map,marker);
});
infowindow.open(map, marker);
});
google.maps.event.addListener(map, 'click', function() {
infowindow.close();
});
google.maps.event.trigger(marker,'click');
}
google.maps.event.addDomListener(window, 'load', initialize);
html,
body,
#map-canvas {
height: 100%;
margin: 0px;
padding: 0px
}
<script src="https://maps.googleapis.com/maps/api/js?v=3.exp"></script>
<div id="map-canvas"></div>
您应该将文本放在具有样式的“
”标签中,或者 class 具有样式属性
var infowindow = new google.maps.InfoWindow({
content: '<div style="width: 10em;">The 123456789</div>'
});
尝试添加
style="word-wrap:nospace"
作为内容的一个属性
var infowindow = new google.maps.InfoWindow({
content: '<p style="word-wrap:nospace">'+The 123456789+'</p>'
});
这是由于全局 img
样式。要还原它,我刚刚添加了
.gm-style img { max-width: none; }
感谢此 answer。