package com.revolsys.swing.map.layer.webmercatortilecache;
import java.awt.image.BufferedImage;
import com.revolsys.swing.map.layer.MapTile;
public class WebMercatorTileCacheMapTile extends MapTile {
private final WebMercatorTileCacheLayer layer;
private final int tileX;
private final int tileY;
private final int zoomLevel;
public WebMercatorTileCacheMapTile(final WebMercatorTileCacheLayer layer, final int zoomLevel,
final double resolution, final int tileX, final int tileY) {
super(layer.getClient().getBoundingBox(zoomLevel, tileX, tileY), 256, 256, resolution);
this.layer = layer;
this.zoomLevel = zoomLevel;
this.tileX = tileX;
this.tileY = tileY;
}
@Override
public boolean equals(final Object obj) {
if (obj instanceof WebMercatorTileCacheMapTile) {
final WebMercatorTileCacheMapTile tile = (WebMercatorTileCacheMapTile)obj;
if (tile.layer == this.layer) {
if (tile.zoomLevel == this.zoomLevel) {
if (tile.tileX == this.tileX) {
if (tile.tileY == this.tileY) {
return true;
}
}
}
}
}
return false;
}
public int getTileX() {
return this.tileX;
}
public int getTileY() {
return this.tileY;
}
public int getZoomLevel() {
return this.zoomLevel;
}
@Override
public int hashCode() {
return this.zoomLevel + this.tileX + this.tileY;
}
@Override
public BufferedImage loadBuffferedImage() {
try {
final WebMercatorTileCacheClient client = this.layer.getClient();
final BufferedImage image = client.getMapImage(this.zoomLevel, this.tileX, this.tileY);
return image;
} catch (final Throwable e) {
return null;
}
}
@Override
public String toString() {
return this.layer + " " + this.zoomLevel + "/" + this.tileX + "/" + this.tileY;
}
}