<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>
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>