解决方案 »

  1.   

    必应的日语代码现在是“ja” 而不是"ja-JP",具体见这里(http://msdn.microsoft.com/en-us/library/hh441729.aspx)你把 url = url.replace("{culture}", "ja");这段代码改下
      

  2.   

    另外我认为如果你不是动态切换语言而是直接加载其他语言的话可以直接在定义layer的时候就直接设置culture这个属性。这样的话似乎更简单些。
      

  3.   

    谢谢您的解答,我按您的说法改为了
    url = url.replace("{culture}", "ja");
    也不好用啊,我参照的是这个文档
    http://creatorish.com/weblog/2634
    我是那测试文件测试的,真实的文件代码太长,所以用例子代码比较好看,这是我修改后的代码,
    ------------
    <!DOCTYPE html>
    <html>
      <head>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0">
        <meta name="apple-mobile-web-app-capable" content="yes">
        <title>OpenLayers Bing Example</title>
        <link rel="stylesheet" href="../theme/default/style.css" type="text/css">
        <link rel="stylesheet" href="style.css" type="text/css">    <script src="../lib/OpenLayers.js"></script>
            
        
        
        <script>        // API key for http://openlayers.org. Please get your own at
            // http://bingmapsportal.com/ and use that instead.
            var apiKey = "AqTGBsziZHIJYYxgivLBf0hVdrAk9mWO5cQcb8Yux8sW5M8c8opEC2lZqKR1ZZXf";
            var map;        function init() {
        
     
    OpenLayers.Layer.Bing.prototype.getURL = function(bounds) {
        if (!this.url) {
            return OpenLayers.Util.getImagesLocation() + "blank.gif";
        }
        var xyz = this.getXYZ(bounds), x = xyz.x, y = xyz.y, z = xyz.z;
        var quadDigits = [];
        for (var i = z; i > 0; --i) {
            var digit = '0';
            var mask = 1 << (i - 1);
            if ((x & mask) != 0) {
                digit++;
            }
            if ((y & mask) != 0) {
                digit++;
                digit++;
            }
            quadDigits.push(digit);
        }
        var quadKey = quadDigits.join("");
        var url = this.selectUrl('' + x + y + z, this.url);
        url = url.replace("{culture}", "ja");
        return OpenLayers.String.format(url, {'quadkey': quadKey});
    };                  map = new OpenLayers.Map("map");
                
               map.addControl(new OpenLayers.Control.LayerSwitcher());
                var road = new OpenLayers.Layer.Bing({
                    name: "Road",
                    key: apiKey,
                    type: "Road"
                });
                
                
                
                var hybrid = new OpenLayers.Layer.Bing({
                    name: "Hybrid",
                    key: apiKey,
                    type: "AerialWithLabels"
                });
                var aerial = new OpenLayers.Layer.Bing({
                    name: "Aerial",
                    key: apiKey,
                    type: "Aerial"
                });
                map.addLayers([road, hybrid, aerial]);            map.setCenter(new OpenLayers.LonLat(-110, 45), 3);        }    </script>
      </head>
      <body onload="init()">
        <h1 id="title">Bing Example</h1>    <div id="tags">
            Bing, Microsoft, Virtual Earth, light
        </div>    <p id="shortdesc">
            Demonstrates the use of Bing layers.
        </p>    <div id="map" class="smallmap"></div>
        <div id="docs"><p>This example demonstrates the ability to create layers
            using tiles from Bing maps.</p></div>
      </body>
    </html>