Javascript bing map TestDataGenerator未定义

Javascript bing map TestDataGenerator未定义,javascript,bing-maps,Javascript,Bing Maps,我尝试了在dynamic 365 CRM中将bing地图作为web资源的最简单示例 <body> <div class="container"> <div class="map" id='mapId'></div> <div id='printoutPanel'></div> </div> <script type='text/javascr

我尝试了在dynamic 365 CRM中将bing地图作为web资源的最简单示例

<body>
    <div class="container">    
        <div class="map" id='mapId'></div>
        <div id='printoutPanel'></div>
    </div>

    <script type='text/javascript'>
        document.onreadystatechange = function () {
            if (document.readyState == "complete") {
                loadMapScenario();
            }
        }

        function loadMapScenario() {
            var map = new window.parent.Microsoft.Maps.Map(document.getElementById('mapId'), {
                credentials: 'Your Bing Maps Key'
            });
            map.entities.push(window.parent.Microsoft.Maps.TestDataGenerator.getPushpins(3, map.getBounds()));
        }
    </script>
</body>

document.onreadystatechange=函数(){
如果(document.readyState==“完成”){
loadMapScenario();
}
}
函数loadMapScenario(){
var map=new window.parent.Microsoft.Maps.map(document.getElementById('mapId'){
凭据:“您的Bing地图密钥”
});
map.entities.push(window.parent.Microsoft.Maps.TestDataGenerator.getPushpins(3,map.getBounds());
}
我目前没有BingMapKey

地图显示在屏幕上,但没有图钉,因为TestDataGenerator未定义。
我哪里错了?

我很惊讶地图竟然上膛了。您需要将Bing Maps V8 map脚本加载到与地图相同的帧中,而不是加载到父窗口中。否则映射控件将无法访问它所需的所有资源。以下是您的代码的一个修改版本,应该可以使用:

<body>
    <div class="container">    
        <div class="map" id='mapId'></div>
        <div id='printoutPanel'></div>
    </div>

    <script type='text/javascript'>
    function loadMapScenario() {
        var map = new Microsoft.Maps.Map(document.getElementById('mapId'), {
            credentials: 'Your Bing Maps Key'
        });
        map.entities.push(Microsoft.Maps.TestDataGenerator.getPushpins(3, map.getBounds()));
    }
    </script>
    <script type='text/javascript' src='https://www.bing.com/api/maps/mapcontrol?callback=loadMapScenario' async defer></script>
</body>

函数loadMapScenario(){
var map=new Microsoft.Maps.map(document.getElementById('mapId'){
凭据:“您的Bing地图密钥”
});
map.entities.push(Microsoft.Maps.TestDataGenerator.getPushpins(3,map.getBounds());
}

谢谢,它很有效。这是令人困惑的部分,我的地图是如何在没有脚本的情况下加载的。因为map已经加载,所以我认为CRM中包含了map脚本,所以我不需要调用它。现在很明显,情况并非如此。