Мне нужно создать демонстрацию автономных карт на компьютере с Windows, и единственная возможность сделать это - использовать кэширование плиток, я использую Openlayers 2, когда я инициализирую слой OSM, все работает как положено:
map = new OpenLayers.Map({
layers: [
new OpenLayers.Layer.OSM("OpenStreetMap (CORS)", null, {
eventListeners: {
tileloaded: updateStatus,
loadend: detect
}})
]
}
Вызывается метод обнаружения, который проверяет, можно ли вызвать функцию getCanvasContext () для плитки, и все работает отлично!Когда я заменяю OSM картами HERE с использованием слоя XYZ, он перестает работать:
var urlTpl = 'https://1.{base}.maps.cit.api.here.com' + '/{type}/2.1/maptile/newest/{scheme}/${z}/${x}/${y}/256/png' + '?app_id=?????&app_code=??????';
var hereLayer = {
base: 'base',
type: 'maptile',
scheme: 'normal.day',
app_id: platform['app_id'],
app_code: platform['app_code']
};
map = new OpenLayers.Map({
layers: [
new OpenLayers.Layer.XYZ("HERE", [createUrl(urlTpl, hereLayer)], {
eventListeners: {
tileloaded: updateStatus,
loadend: detect
}
})
]
}
В этом примере вызывается метод обнаружения, но на этот раз функция getCanvasContext () выдает исключение:
код: 18
сообщение: не удалось выполнить 'toDataURL' для 'HTMLCanvasElement': испорченные полотна не могут быть экспортированы.
name: SecurityError
Что я могу сделать?