Я не могу воспроизвести ошибку, но так как источник Bing аутентифицирует ключ API асинхронно, прежде чем он будет готов к использованию, вы можете попробовать
function addBingMap() {
var realMap = map.mapWrapper.getMap();
var bingLayer = map.mapHolder.createBingLayer("someAPIKey", "Road");
var onKey = bingLayer.getSource().on("change", function() {
if (bingLayer.getSource().getState() == "ready") {
ol.Observable.unByKey(onKey);
realMap.addLayer(bingLayer);
}
});
}
, где невозможное преобразование, такое как полюс в веб-mercator, вызывает ошибку, котораяможно игнорировать:
var forward = ol.proj.getTransform(projection1, projection2);
var inverse = ol.proj.getTransform(projection2, projection1);
ol.proj.addCoordinateTransforms(
projection1,
projection2,
function(coordinate) {
try {
return forward(coordinate)
} catch (e) {
return [undefined, undefined];
}
},
function(coordinate) {
try {
return inverse(coordinate)
} catch (e) {
return [undefined, undefined];
}
}
);
Там, где допустимые прямые преобразования не удаются, но можно заставить работать с использованием промежуточного проецирования:
var forward1 = ol.proj.getTransform(projection1, intermediate);
var forward2 = ol.proj.getTransform(intermediate, projection2);
var inverse1 = ol.proj.getTransform(projection2, intermediate);
var inverse2 = ol.proj.getTransform(intermediate, projection1);
ol.proj.addCoordinateTransforms(
projection1,
projection2,
function(coordinate) {
try {
return forward2(forward1(coordinate));
} catch (e) {
return [undefined, undefined];
}
},
function(coordinate) {
try {
return inverse2(inverse1(coordinate));
} catch (e) {
return [undefined, undefined];
}
}
);