1
レベル0〜9のタイルを提供しています。ユーザーがズームレベル10以上になると、Open Street Mapのデフォルト値に戻ってURLを変更します。レベル(z値)に基づいてol.source.OSMタイルURLを変更するには
私はこれを試して、ほとんど動作します。レベル10以上を選択すると、ol.source.OSM.setURLs()関数を使用してURLを変更します。しかし、すべてではなく一部の場合でも、画像は引き続きローカルのURLに設定されます。私はこれが何らかのキャッシュ問題であると確信していますが、わかりません。
$scope.tilesource = new ol.source.OSM({
url : '/'+$scope.tileRoot+'/tiles/{z}/{x}/{y}.png',
wrapX : false
});
var raster = new ol.layer.Tile({
source : $scope.tilesource
});
$scope.tilesource.on('tileloadstart', function(arg) {
//console.log(arg.tile.src_);
if ($scope.tileLevelsSupported.search(arg.tile.tileCoord[0]) == -1) {
$scope.tilesource.setUrls(["https://a.tile.openstreetmap.org/{z}/{x}/{y}.png", "https://b.tile.openstreetmap.org/{z}/{x}/{y}.png", "https://c.tile.openstreetmap.org/{z}/{x}/{y}.png"]);
} else {
$scope.tilesource.setUrl('/'+$scope.tileRoot+'/tiles/{z}/{x}/{y}.png');
}
});
私はOSMとTileでいくつかの方法を試しましたが、運がありませんでした。これらの例では、タイルURLが間違っていると、ファイルが見つかりません404エラー(予想)が表示されますが、それ自体が修正され、タイルが読み込まれます。
ありがとうございます。
これらの2つのレイヤーを1つのレイヤーとして扱う必要がある場合は、レイヤーツリーでの可視性を制御するなど、それらを「ol.layer.Group」に追加してグループのみを管理できます。 –
それはうまくいった。ありがとう! –
今後の参考のため、回答が「受け入れられた」と回答しても問題ありません。 –