Javascript Bing映射了V8 Web控件和CommonJS

Javascript Bing映射了V8 Web控件和CommonJS,javascript,bing-maps,commonjs,brunch,Javascript,Bing Maps,Commonjs,Brunch,我正在Web应用程序中使用Bing Maps V8 Web控件。我还使用早午餐管理静态资产,包括JavaScript。默认情况下,Brunch将所有非供应商JavaScript代码包装在CommonJS模块中 Microsoft的文档中说,在脚本导入URL中使用回调参数初始化控件,如下所示: <script type='text/javascript' src='http://www.bing.com/api/maps/mapcontrol?branch=release&callb

我正在Web应用程序中使用Bing Maps V8 Web控件。我还使用早午餐管理静态资产,包括JavaScript。默认情况下,Brunch将所有非供应商JavaScript代码包装在CommonJS模块中

Microsoft的文档中说,在脚本导入URL中使用回调参数初始化控件,如下所示:

<script type='text/javascript' src='http://www.bing.com/api/maps/mapcontrol?branch=release&callback=loadMapScenario' async defer></script>
问题是我从API中得到一个错误,说回调函数无效


有更好的方法吗?web控件是否有办法以这种方式调用CommonJS包装函数?

请参阅下面代码的问题:

  • 在此行中定义了一个回调函数
    loadMapScenario
    ,但它不存在

  • 地图函数仅在包含bing地图库js后调用

  • 解决方案

    bing地图提供了一个示例代码。看

    如果您无法看到上面的链接,那么只需查看下面的代码即可。只需使用bing地图api密钥进行连接。这里提供的示例代码是自动建议的,无需加载地图。您可以在上面的链接中看到不同的选项

    <!DOCTYPE html>
    <html>
    <head>
        <title>autoSuggestUiWithoutMapHTML</title>
        <meta http-equiv='Content-Type' content='text/html; charset=utf-8'/>
    </head>
    <body>
        <div id='printoutPanel'></div>
        <div id='searchBoxContainer'><input type= 'text' id= 'searchBox'/></div>
    
        <div id='myMap' style='width: 100vw; height: 100vh;'></div>
        <script type='text/javascript'>
            function loadMapScenario() {
                Microsoft.Maps.loadModule('Microsoft.Maps.AutoSuggest', {
                    callback: onLoad,
                    errorCallback: onError,
                    credentials: 'Your Bing Maps Key'
                });
                function onLoad() {
                    var options = { maxResults: 5 };
                    var manager = new Microsoft.Maps.AutosuggestManager(options);
                    manager.attachAutosuggest('#searchBox', '#searchBoxContainer', selectedSuggestion);
                }
                function onError(message) {
                    document.getElementById('printoutPanel').innerHTML = message;
                }
                function selectedSuggestion(suggestionResult) {
                    document.getElementById('printoutPanel').innerHTML =
                        'Suggestion: ' + suggestionResult.formattedSuggestion +
                            '<br> Lat: ' + suggestionResult.location.latitude +
                            '<br> Lon: ' + suggestionResult.location.longitude;
                }
    
            }
        </script>
        <script type='text/javascript' src='http://www.bing.com/api/maps/mapcontrol?branch=release&callback=loadMapScenario' async defer></script>
    </body>
    
    
    autoSuggestUiWithoutMapHTML
    函数loadMapScenario(){
    Microsoft.Maps.loadModule('Microsoft.Maps.AutoSuggest'{
    回调:onLoad,
    errorCallback:onError,
    凭据:“您的Bing地图密钥”
    });
    函数onLoad(){
    var options={maxResults:5};
    var manager=new Microsoft.Maps.AutosuggestManager(选项);
    manager.attachAutosuggest(“#searchBox”、“#searchBoxContainer”、selectedsuggest);
    }
    函数onError(消息){
    document.getElementById('printoutPanel')。innerHTML=message;
    }
    功能选择建议(建议结果){
    document.getElementById('printoutPanel').innerHTML=
    “建议:”+suggestionResult.formattedSuggestion+
    “
    纬度:”+suggestionResult.location.latitude+ “
    Lon:”+suggestionResult.location.longitude; } }

    请参见下面的代码问题:

  • 在此行中定义了一个回调函数
    loadMapScenario
    ,但它不存在

  • 地图函数仅在包含bing地图库js后调用

  • 解决方案

    bing地图提供了一个示例代码。看

    如果您无法看到上面的链接,那么只需查看下面的代码即可。只需使用bing地图api密钥进行连接。这里提供的示例代码是自动建议的,无需加载地图。您可以在上面的链接中看到不同的选项

    <!DOCTYPE html>
    <html>
    <head>
        <title>autoSuggestUiWithoutMapHTML</title>
        <meta http-equiv='Content-Type' content='text/html; charset=utf-8'/>
    </head>
    <body>
        <div id='printoutPanel'></div>
        <div id='searchBoxContainer'><input type= 'text' id= 'searchBox'/></div>
    
        <div id='myMap' style='width: 100vw; height: 100vh;'></div>
        <script type='text/javascript'>
            function loadMapScenario() {
                Microsoft.Maps.loadModule('Microsoft.Maps.AutoSuggest', {
                    callback: onLoad,
                    errorCallback: onError,
                    credentials: 'Your Bing Maps Key'
                });
                function onLoad() {
                    var options = { maxResults: 5 };
                    var manager = new Microsoft.Maps.AutosuggestManager(options);
                    manager.attachAutosuggest('#searchBox', '#searchBoxContainer', selectedSuggestion);
                }
                function onError(message) {
                    document.getElementById('printoutPanel').innerHTML = message;
                }
                function selectedSuggestion(suggestionResult) {
                    document.getElementById('printoutPanel').innerHTML =
                        'Suggestion: ' + suggestionResult.formattedSuggestion +
                            '<br> Lat: ' + suggestionResult.location.latitude +
                            '<br> Lon: ' + suggestionResult.location.longitude;
                }
    
            }
        </script>
        <script type='text/javascript' src='http://www.bing.com/api/maps/mapcontrol?branch=release&callback=loadMapScenario' async defer></script>
    </body>
    
    
    autoSuggestUiWithoutMapHTML
    函数loadMapScenario(){
    Microsoft.Maps.loadModule('Microsoft.Maps.AutoSuggest'{
    回调:onLoad,
    errorCallback:onError,
    凭据:“您的Bing地图密钥”
    });
    函数onLoad(){
    var options={maxResults:5};
    var manager=new Microsoft.Maps.AutosuggestManager(选项);
    manager.attachAutosuggest(“#searchBox”、“#searchBoxContainer”、selectedsuggest);
    }
    函数onError(消息){
    document.getElementById('printoutPanel')。innerHTML=message;
    }
    功能选择建议(建议结果){
    document.getElementById('printoutPanel').innerHTML=
    “建议:”+suggestionResult.formattedSuggestion+
    “
    纬度:”+suggestionResult.location.latitude+ “
    Lon:”+suggestionResult.location.longitude; } }

    正如您所看到的,我实际上使用的正是这个示例代码。问题是我试图将JS代码提取到一个单独的文件中,而不是用
    将其嵌入HTML中。实际上,我已经通过返回谷歌地图“修复”了这个问题。Bing并没有提供我所需要的所有信息——他们的数据中没有填写邮政编码字段。我发现一篇论坛帖子说,他们并没有优先考虑进行完整的数据集成。美好的保持优雅,微软。正如你所看到的,我实际上使用的正是这个示例代码。问题是我试图将JS代码提取到一个单独的文件中,而不是用
    将其嵌入HTML中。实际上,我已经通过返回谷歌地图“修复”了这个问题。Bing并没有提供我所需要的所有信息——他们的数据中没有填写邮政编码字段。我发现一篇论坛帖子说,他们并没有优先考虑进行完整的数据集成。美好的保持优雅,微软。