made metadata api parameters configurable. p="Jeff Maki",me r=me (closes #3013)
git-svn-id: http://svn.openlayers.org/trunk/openlayers@11032 dc9f47b5-9b13-0410-9fdd-eb0c1a62fdaf
This commit is contained in:
@@ -6,7 +6,10 @@ var map = new OpenLayers.Map( 'map');
|
|||||||
|
|
||||||
var road = new OpenLayers.Layer.Bing({
|
var road = new OpenLayers.Layer.Bing({
|
||||||
key: apiKey,
|
key: apiKey,
|
||||||
type: "Road"
|
type: "Road",
|
||||||
|
// custom metadata parameter to request the new map style - only useful
|
||||||
|
// before May 1st, 2011
|
||||||
|
metadataParams: {mapVersion: "v1"}
|
||||||
});
|
});
|
||||||
var aerial = new OpenLayers.Layer.Bing({
|
var aerial = new OpenLayers.Layer.Bing({
|
||||||
key: apiKey,
|
key: apiKey,
|
||||||
|
|||||||
@@ -42,6 +42,13 @@ OpenLayers.Layer.Bing = OpenLayers.Class(OpenLayers.Layer.XYZ, {
|
|||||||
* used. Default is "Road".
|
* used. Default is "Road".
|
||||||
*/
|
*/
|
||||||
type: "Road",
|
type: "Road",
|
||||||
|
|
||||||
|
/**
|
||||||
|
* APIProperty: metadataParams
|
||||||
|
* {Object} Optional url parameters for the Get Imagery Metadata request
|
||||||
|
* as described here: http://msdn.microsoft.com/en-us/library/ff701716.aspx
|
||||||
|
*/
|
||||||
|
metadataParams: null,
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Constant: EVENT_TYPES
|
* Constant: EVENT_TYPES
|
||||||
@@ -106,25 +113,26 @@ OpenLayers.Layer.Bing = OpenLayers.Class(OpenLayers.Layer.XYZ, {
|
|||||||
|
|
||||||
var newArgs = [name, null, options];
|
var newArgs = [name, null, options];
|
||||||
OpenLayers.Layer.XYZ.prototype.initialize.apply(this, newArgs);
|
OpenLayers.Layer.XYZ.prototype.initialize.apply(this, newArgs);
|
||||||
this.loadMetadata(this.type);
|
this.loadMetadata();
|
||||||
},
|
},
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Method: loadMetadata
|
* Method: loadMetadata
|
||||||
*
|
|
||||||
* Parameters:
|
|
||||||
* imageryType - {String}
|
|
||||||
*/
|
*/
|
||||||
loadMetadata: function(imageryType) {
|
loadMetadata: function() {
|
||||||
this._callbackId = "_callback_" + this.id.replace(/\./g, "_");
|
this._callbackId = "_callback_" + this.id.replace(/\./g, "_");
|
||||||
// link the processMetadata method to the global scope and bind it
|
// link the processMetadata method to the global scope and bind it
|
||||||
// to this instance
|
// to this instance
|
||||||
window[this._callbackId] = OpenLayers.Function.bind(
|
window[this._callbackId] = OpenLayers.Function.bind(
|
||||||
OpenLayers.Layer.Bing.processMetadata, this
|
OpenLayers.Layer.Bing.processMetadata, this
|
||||||
);
|
);
|
||||||
|
var params = OpenLayers.Util.applyDefaults({
|
||||||
|
key: this.key,
|
||||||
|
jsonp: this._callbackId,
|
||||||
|
include: "ImageryProviders"
|
||||||
|
}, this.metadataParams);
|
||||||
var url = "http://dev.virtualearth.net/REST/v1/Imagery/Metadata/" +
|
var url = "http://dev.virtualearth.net/REST/v1/Imagery/Metadata/" +
|
||||||
imageryType + "?key=" + this.key + "&jsonp=" + this._callbackId +
|
this.type + "?" + OpenLayers.Util.getParameterString(params);
|
||||||
"&include=ImageryProviders";
|
|
||||||
var script = document.createElement("script");
|
var script = document.createElement("script");
|
||||||
script.type = "text/javascript";
|
script.type = "text/javascript";
|
||||||
script.src = url;
|
script.src = url;
|
||||||
|
|||||||
@@ -13,18 +13,20 @@
|
|||||||
};
|
};
|
||||||
|
|
||||||
function test_constructor(t) {
|
function test_constructor(t) {
|
||||||
t.plan(2);
|
t.plan(3);
|
||||||
|
|
||||||
var origProcessMetadata = OpenLayers.Layer.Bing.processMetadata;
|
var origProcessMetadata = OpenLayers.Layer.Bing.processMetadata;
|
||||||
var log = [];
|
var log = [];
|
||||||
OpenLayers.Layer.Bing.processMetadata = function(metadata) {
|
OpenLayers.Layer.Bing.processMetadata = function(metadata) {
|
||||||
log.push(metadata);
|
var script = document.getElementById(this._callbackId);
|
||||||
|
log.push(script.src);
|
||||||
origProcessMetadata.apply(this, arguments);
|
origProcessMetadata.apply(this, arguments);
|
||||||
};
|
};
|
||||||
layer = new OpenLayers.Layer.Bing(options);
|
layer = new OpenLayers.Layer.Bing({metadataParams: {foo: "bar"}});
|
||||||
t.ok(layer instanceof OpenLayers.Layer.Bing, "returns OpenLayers.Layer.Bing object" );
|
t.ok(layer instanceof OpenLayers.Layer.Bing, "returns OpenLayers.Layer.Bing object" );
|
||||||
t.delay_call(2, function() {
|
t.delay_call(2, function() {
|
||||||
t.eq(log.length, 1, "processMetadata called");
|
t.eq(log.length, 1, "processMetadata called");
|
||||||
|
t.eq(OpenLayers.Util.getParameters(log[0]).foo, "bar", "metadataParams passed to url correctly.");
|
||||||
OpenLayers.Layer.Bing.processMetadata = origProcessMetadata;
|
OpenLayers.Layer.Bing.processMetadata = origProcessMetadata;
|
||||||
layer.destroy();
|
layer.destroy();
|
||||||
});
|
});
|
||||||
|
|||||||
Reference in New Issue
Block a user