123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126 |
- import Credit from "../Core/Credit.js";
- import defaultValue from "../Core/defaultValue.js";
- import defined from "../Core/defined.js";
- import DeveloperError from "../Core/DeveloperError.js";
- import Rectangle from "../Core/Rectangle.js";
- import Resource from "../Core/Resource.js";
- import WebMercatorTilingScheme from "../Core/WebMercatorTilingScheme.js";
- import UrlTemplateImageryProvider from "./UrlTemplateImageryProvider.js";
- var defaultCredit = new Credit(
- "MapQuest, Open Street Map and contributors, CC-BY-SA"
- );
- function OpenStreetMapImageryProvider(options) {
- options = defaultValue(options, defaultValue.EMPTY_OBJECT);
- var resource = Resource.createIfNeeded(
- defaultValue(options.url, "https://a.tile.openstreetmap.org/")
- );
- resource.appendForwardSlash();
- resource.url += "{z}/{x}/{y}." + defaultValue(options.fileExtension, "png");
- var tilingScheme = new WebMercatorTilingScheme({
- ellipsoid: options.ellipsoid,
- });
- var tileWidth = 256;
- var tileHeight = 256;
- var minimumLevel = defaultValue(options.minimumLevel, 0);
- var maximumLevel = options.maximumLevel;
- var rectangle = defaultValue(options.rectangle, tilingScheme.rectangle);
-
-
-
- var swTile = tilingScheme.positionToTileXY(
- Rectangle.southwest(rectangle),
- minimumLevel
- );
- var neTile = tilingScheme.positionToTileXY(
- Rectangle.northeast(rectangle),
- minimumLevel
- );
- var tileCount =
- (Math.abs(neTile.x - swTile.x) + 1) * (Math.abs(neTile.y - swTile.y) + 1);
-
- if (tileCount > 4) {
- throw new DeveloperError(
- "The rectangle and minimumLevel indicate that there are " +
- tileCount +
- " tiles at the minimum level. Imagery providers with more than four tiles at the minimum level are not supported."
- );
- }
-
- var credit = defaultValue(options.credit, defaultCredit);
- if (typeof credit === "string") {
- credit = new Credit(credit);
- }
- UrlTemplateImageryProvider.call(this, {
- url: resource,
- credit: credit,
- tilingScheme: tilingScheme,
- tileWidth: tileWidth,
- tileHeight: tileHeight,
- minimumLevel: minimumLevel,
- maximumLevel: maximumLevel,
- rectangle: rectangle,
- });
- }
- if (defined(Object.create)) {
- OpenStreetMapImageryProvider.prototype = Object.create(
- UrlTemplateImageryProvider.prototype
- );
- OpenStreetMapImageryProvider.prototype.constructor = OpenStreetMapImageryProvider;
- }
- export default OpenStreetMapImageryProvider;
|