Javascript 当我浏览回页面时,谷歌地图信息窗口不会弹出
使用GoogleMapsJavaScriptv3,我有一个带有一些标记的地图。我在每个标记上都有一个侦听器,在单击事件中弹出一个信息窗口。这个很好用。问题是,当我单击页面上的任何链接,然后浏览回原始页面时,信息窗口将停止显示。我在监听器中加入了警报语句,因此我知道监听器正在运行,但我无法理解为什么InfoWindows没有显示 这是我的密码:Javascript 当我浏览回页面时,谷歌地图信息窗口不会弹出,javascript,google-maps-api-3,Javascript,Google Maps Api 3,使用GoogleMapsJavaScriptv3,我有一个带有一些标记的地图。我在每个标记上都有一个侦听器,在单击事件中弹出一个信息窗口。这个很好用。问题是,当我单击页面上的任何链接,然后浏览回原始页面时,信息窗口将停止显示。我在监听器中加入了警报语句,因此我知道监听器正在运行,但我无法理解为什么InfoWindows没有显示 这是我的密码: <script type="text/javascript"> var map; var viewable; var markerArray
<script type="text/javascript">
var map;
var viewable;
var markerArray = new Array();
var infoWindow;
function initialize() {
infoWindow = new google.maps.InfoWindow({ content: "holding..." });
var mapOptions = {
mapTypeId: google.maps.MapTypeId.ROADMAP,
zoom: 15,
};
map = new google.maps.Map(document.getElementById("map_canvas"), mapOptions);
var bounds = new google.maps.LatLngBounds();
var loop_latlng = new google.maps.LatLng( 42.341111, -71.080707 );
marker = addMarker( loop_latlng, "<strong>$1,495.00</strong> <br> Columbus Ave <br> 0 beds / 1 baths <br> <img src='/images/71428455_0.jpg' width=150> <br> <a href='/mls_rn/8305'>get more details</a>" );
bounds.extend(loop_latlng);
var loop_latlng = new google.maps.LatLng( 42.340022, -71.0657278 );
marker = addMarker( loop_latlng, "<strong>$2,000.00</strong> <br> Union Park St <br> 2 beds / 1 baths <br> <img src='/images/71426623_0.jpg' width=150> <br> <a href='/mls_rn/8253'>get more details</a>" );
bounds.extend(loop_latlng);
map.setCenter(bounds.getCenter());
map.fitBounds(bounds);
showMarkers();
}
function addMarker(location,contentString) {
var iw = new google.maps.InfoWindow({
content: contentString
});
var marker = new google.maps.Marker({
position: location,
animation: google.maps.Animation.DROP,
content: contentString,
map: map
});
google.maps.event.addListener(marker,'click',function(){
infoWindow.setContent(this.content);
infoWindow.open(map,this);
});
markerArray.push(marker);
return marker;
}
// display all the markers on the map
function showMarkers() {
if (markerArray) {
for ( i in markerArray ) {
markerArray[i].setMap(map);
}
}
}
function loadScript() {
var script = document.createElement("script");
script.type = "text/javascript";
script.src = "http://maps.googleapis.com/maps/api/js?key=AIzaSyCICKRjJ3Vo_l2hy5uV7GdkYBot6jCtZzI&sensor=true&callback=initialize";
document.body.appendChild(script);
}
window.onload = loadScript;
</script>
var映射;
可见变量;
var markerArray=新数组();
var信息窗口;
函数初始化(){
infoWindow=newgoogle.maps.infoWindow({content:“holding…”});
变量映射选项={
mapTypeId:google.maps.mapTypeId.ROADMAP,
缩放:15,
};
map=new google.maps.map(document.getElementById(“map_canvas”),mapOptions);
var bounds=new google.maps.LatLngBounds();
var loop_latlng=新的google.maps.latlng(42.341111,-71.080707);
marker=addMarker(loop_latlng,“$1495.00
哥伦布大街
0张床/1个浴室
”;
边界。扩展(循环);
var loop_latlng=新的google.maps.latlng(42.340022,-71.0657278);
marker=addMarker(loop_latlng,“$2000.00
联合公园街
两张床/1个浴室
”;
边界。扩展(循环);
map.setCenter(bounds.getCenter());
映射边界(bounds);
showmarks();
}
函数addMarker(位置,contentString){
var iw=new google.maps.InfoWindow({
内容:contentString
});
var marker=new google.maps.marker({
位置:位置,,
动画:google.maps.animation.DROP,
content:contentString,
地图:地图
});
google.maps.event.addListener(标记,'click',函数(){
infoWindow.setContent(this.content);
打开(地图,这个);
});
markerArray.push(标记器);
返回标记;
}
//显示地图上的所有标记
函数showMarkers(){
if(markerary){
对于(我在Markerary){
markerArray[i].setMap(map);
}
}
}
函数loadScript(){
var script=document.createElement(“脚本”);
script.type=“text/javascript”;
script.src=”http://maps.googleapis.com/maps/api/js?key=AIzaSyCICKRjJ3Vo_l2hy5uV7GdkYBot6jCtZzI&sensor=true&callback=initialize";
document.body.appendChild(脚本);
}
window.onload=loadScript;
我认为这实际上可能是Rails的问题。如果我将其剪切并粘贴到HTML文档中,它似乎可以正常工作;然而,在我的Rails应用程序中,我看到了这种行为。我注意到的一点是,在纯HTML的情况下,映射似乎会重新初始化,但在Rails中似乎不会这样做。我将对此进行更多的调查和评论。如果有人以前见过这种情况;不过,请插话 您描述的行为不会发生在我身上,因此我希望您的代码的行为与此完全相同
您需要手动编程以实现此类功能。在兼容HTML5的浏览器上,可以使用手动打开信息窗口。但是,所有当前(低于10.0)版本的Internet Explorer都不支持此事件,因此您还必须在窗口
加载事件中处理此事件。您描述的行为不会在上发生在我身上,因此我希望您的代码的行为与此完全相同
您需要手动编程以实现此类功能。在兼容HTML5的浏览器上,可以使用手动打开信息窗口。但是,所有当前(低于10.0)版本的Internet Explorer都不支持此事件,因此您还必须在窗口load
事件中处理此事件。如果您最初通过其他方式触发loadScript()
(不在窗口的load
事件中)是否有效?如果您最初通过其他方式触发loadScript()
(不在load
事件的window
上),它是否工作?