Merkblatt Karte zeigt nicht richtig in bootstrap 3.0 modal
ich habe ein großes problem. ich möchte zu öffnen ein Merkblatt Karte in einem modal.
aber die Karte zeigt nicht richtig. die Kacheln werden nicht geladen.
hier ist das Skript:
<a href="#myModal" role="button" class="btn btn-primary" data-toggle="modal">Open Map</a>
<div id="myModal" class="modal">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button>
<h4 class="modal-title">Map</h4>
</div>
<div class="modal-body">
<div class="modal-body" id="map-canvas"></div>
</div>
<div class="modal-footer">
<button type="button" class="btn" data-dismiss="modal" aria-hidden="true">OK</button>
</div>
</div>
</div>
$.getScript('http://cdn.leafletjs.com/leaflet-0.7/leaflet.js',function(){
/* map settings */
var map = new L.Map('map-canvas');
var cloudmade = new L.TileLayer('http://{s}.tile.cloudmade.com/f1376bb0c116495e8cb9121360802fb0/997/256/{z}/{x} /{y}.png', {
attribution: 'Map data © <a href="http://openstreetmap.org">OpenStreetMap</a> contributors, Imagery © <a href="http://cloudmade.com">CloudMade</a>',
maxZoom: 18
});
map.addLayer(cloudmade).setView(new L.LatLng(41.52, -71.09), 13);
});
jede Hilfe viel apreciated
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich denke, was passiert ist, dass, wenn die Karte erstellt wird, die container-Breite/- Höhe für Ihr "map-canvas" - element wurde noch nicht angepasst, um die Breite/Höhe des modalen Dialogfelds. Dies bewirkt, dass die map-Größe nicht korrekt zu sein (kleiner) als das, was es sein sollte.
Können Sie dieses Problem beheben, indem Berufung
map.invalidateSize()
. Dies wird die Arbeit neu zu justieren die Breite/Höhe Grenzen der L.-Map-container.Können Sie automatisch rufen Sie diese durch Einhaken in die Veranstaltung, wo die Bootstrap-modal wird angezeigt.
Fügen Sie diesen code in JavaScript. Wenn der modal angezeigt wird, wird die Karte dann sofort seine Größe. Der timeout ist da möglicherweise werden einige Animations - /übergangs-Zeit für die modal angezeigt und Hinzugefügt werden, um den DOM.
<div id='map-canvas' style='height:360px;'></div>
Sollten Sie wahrscheinlich vermeiden Sie die Verwendung von setTimeout mit einer zufällig gewählten Verzögerung. Einen besseren Weg, mit dem 'gezeigt.bs.modal' - Ereignis anstelle von " show.bs.modal':
Oder verwenden Sie den Unterstrich ' s aufschieben :
Ich diese Problemumgehung verwenden:
Dieser arbeitete für mich -