Проблема с вашим кодом заключается в том, что элемент управления Bing Maps асинхронно загружает много дополнительных ресурсов, поэтому при создании нового экземпляра карты ресурсы еще не загружаются. Вот пример кода для отложенной загрузки элемента управления картой, который будет ожидать загрузки всех ресурсов.
<!DOCTYPE html>
<html>
<head>
<title></title>
<meta charset="utf-8" />
<script type='text/javascript'>
var map;
function loadMap() {
if (!map) {
var mapScriptUrl = 'https://www.bing.com/api/maps/mapcontrol?callback=GetMap&key=[YOUR_BING_MAPS_KEY]';
var script = document.createElement("script");
script.setAttribute('defer', '');
script.setAttribute('async', '');
script.setAttribute("type", "text/javascript");
script.setAttribute("src", mapScriptUrl);
document.body.appendChild(script);
}
}
function GetMap()
{
map = new Microsoft.Maps.Map('#myMap', {});
}
</script>
</head>
<body>
<input type="button" onclick="loadMap()" value="Load Map"/>
<div id="myMap" style="position:relative;width:800px;height:600px;"></div>
</body>
</html>
Теперь это решит проблему синхронизации, однако загрузка элемента управления картой дважды на одной странице может вызвать проблемы.