Ich versuche eine Google Map zu erstellen, die angezeigt wird, wenn auf einen Link geklickt wird und dann ausgeblendet wird, wenn auf einen anderen Link geklickt wird. Alles funktioniert gut, außer wenn ich die Karte vom Display zeige: keine, es wird nicht richtig angezeigt.Google Maps Anzeige: Keine Problem
Ich habe gelesen über die Verwendung von google.maps.event.trigger (map, 'resize'); aber ich bin nicht kompetent genug, um mit Javascript und JQuery zu wissen, wie es fügen in
Hier ist der Code, den ich verwendet habe.
<!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>
Jede Hilfe wäre sehr willkommen,
Quintin
Hallo Javier, gibt es eine Möglichkeit, es ohne absolute Positionierung zu tun? Können Sie google.maps.event.trigger (map, 'resize') implementieren? in meinen Code? –
Hallo, ich habe ein paar kleinere Änderungen an Ihrem Javascript vorgenommen und funktioniert gut für mich, ich lege die Map-Variable außerhalb der Funktion, damit sie für andere Funktionen verfügbar ist (in Ihrem Fall die Funktion toggleDiv1) und dann wenn Ihr Map div wieder angezeigt wird , können Sie das Größenänderungs-Map-Ereignis auslösen. Ich empfehle Ihnen, diese Dinge mit jQuery zu tun, damit Sie nicht extra Code schreiben müssen. – javiertoledos
Das scheint für die Anzeige der Karte zu funktionieren, aber aus irgendeinem Grund ist es nicht zentriert, wo es sein sollte. Wenn Sie nach links blättern, gibt es einen roten Ballon, wo er zentriert sein sollte. Es funktioniert gut, wenn Sie die Karte von Anfang an sichtbar machen. Aber etwas passiert, wenn das div nicht blockiert und es nicht zentriert bleibt. Weißt du, warum das so sein könnte? –