扩展切片源信息

发送反馈


切片源信息类定义了瓦片的存储信息、瓦片集类型(UserDefined)、具体的瓦片存储类型等,如地图瓦片的类型为“image”。

扩展形式如下:

public class NationalCacheStandardTileSourceInfo extends TileSourceInfo {
...
}

需要实现的方法有:

字段/方法 描述
public NationalCacheStandardTileSourceInfo(NationalCacheStandardTileSourceInfo
 info)
实现拷贝构造函数
public TileSourceInfo copy() 实现 copy 方法
public TileSourceType getType()
public void setType(TileSourceType type)
指定存储类型,必须设置为“UserDefined”
public TileType[] getSupportedTileTypes() 指定该存储支持的瓦片类型,如地图瓦片必须指定为“image”
public int hashCode()
public boolean equals(Object obj)
实现 hashCode、equals 方法
 

实现拷贝构造函数和 copy 方法

实现拷贝构造函数,方法如下:

    public NationalCacheStandardTileSourceInfo(NationalCacheStandardTileSourceInfo info) {
        super(info);
        this.setOutputPath(info.getOutputPath());
    }

实现 copy 方法:

    @Override
    public TileSourceInfo copy() {
        return new NationalCacheStandardTileSourceInfo(this);
    }

指定存储类型

需要为扩展的瓦片格式(tileset)定义类型,所有扩展格式的瓦片类型都应该设置为 UserDefined。

    public TileSourceType getType() {
        return TileSourceType.UserDefined;
    }
        //所有扩展格式的瓦片类型都应该设置为 UserDefined。
    public void setType(TileSourceType type) {
        if (!(TileSourceType.UserDefined.equals(type))) {
            throw new IllegalArgumentException();
        }
        super.setType(type);
    }

指定瓦片类型

定义扩展的瓦片的存储格式类型,如地图瓦片(栅格格式)需要设置为“Image”。

    @Override
    public TileType[] getSupportedTileTypes() {
        return new TileType[] { TileType.Image };
    }

实现 hashCode、equals 方法

    public int hashCode() {
        HashCodeBuilder builder = new HashCodeBuilder(120000039, 120000041);
        String outputPath = getOutputPath();
        if (outputPath != null) {
            builder.append(Tool.getUniqueAbsoluteFilePath(outputPath));
        }
        if (getType() != null) {
            builder.append(getType());
        }
        return builder.toHashCode();
    }
    public boolean equals(Object obj) {
        if (obj == null) {
            return false;
        }
        if (obj == this) {
            return true;
        }
        if (!(obj instanceof NationalCacheStandardTileSourceInfo)) {
            return false;
        }
        NationalCacheStandardTileSourceInfo rhs = (NationalCacheStandardTileSourceInfo) obj;
        return new EqualsBuilder().append(this.getOutputPath(), rhs.getOutputPath()).append(this.getType(), rhs.getType()).isEquals();
    }

 

完整的扩展示例类如下:

NationalCacheStandardTileSourceInfo.java