AmCharts - Map - Changing providerData in a modal
HTML
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/2.2.1/jquery.min.js"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/js/bootstrap.min.js"></script>
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css">
<script type="text/javascript" src="https://www.amcharts.com/lib/3/ammap.js"></script>
<script type="text/javascript" src="https://www.amcharts.com/lib/3/maps/js/worldLow.js"></script>
<script type="text/javascript" src="https://www.amcharts.com/lib/3/themes/none.js"></script>
<div id="controls">
<button class="btn btn-default" data-toggle="modal" data-target="#map_modal">show Modal</button>
<div class="modal fade" id="map_modal">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-labelField="Close"><span>×</span></button>
<h4 class="modal-title">the Map</h4>
</div>
<div class="modal-body">
<div id="mapDiv"></div>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
</div>
</div>
</div>
</div>
CSS
#mapDiv {
width : 100%;
height : 500px;
background-color: white;
}
#controls {
margin-top: 20px;
text-align: center;
}
#controls button {
width: 200px;
height: 40px;
}
JavaScript
AmCharts.theme = AmCharts.themes.light;
window.mapUpdated = false;
window.firstLoad = true;
window.map = new AmCharts.AmMap();
window.map.pathToImages = "https://cdn.amcharts.com/lib/3/images/";
window.map.areasSettings = {
autoZoom: true,
selectedColor: "#CC0000",
unlistedAreasColor: "#000000",
unlistedAreasAlpha: 0.1
};
window.map.autoResize = false;
window.map.dataProvider = {
"map": "worldLow",
"colorSteps": 10,
"areas" : [
{"id": "CN", "value": 1, "balloonText": "CN - 1"},
{"id": "DE", "value": 4, "balloonText": "DE - 4"},
{"id": "FR", "value": 40, "balloonText": "FR - 4"}
]
};
window.map.autoResize = false;
map.write(document.getElementById("mapDiv"));
$('#map_modal').on('shown.bs.modal', function (e) {
if (window.firstLoad) {
map.write(document.getElementById("mapDiv"));
window.firstLoad = false;
}
if (window.mapUpdated) {
window.map.validateData();
window.mapUpdated = false;
}
});