扩展切片源信息 |
切片源信息类定义了瓦片的存储信息、瓦片集类型(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 方法 |
实现拷贝构造函数,方法如下:
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 }; }
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
package com.supermap.services.tilesource; import org.apache.commons.lang3.builder.EqualsBuilder; import org.apache.commons.lang3.builder.HashCodeBuilder; import com.supermap.services.components.commontypes.TileType; import com.supermap.services.util.Tool; public class NationalCacheStandardTileSourceInfo extends TileSourceInfo { private static final long serialVersionUID = 1L; private String outputPath; public NationalCacheStandardTileSourceInfo() { super(); } //实现拷贝构造函数 public NationalCacheStandardTileSourceInfo(NationalCacheStandardTileSourceInfo info) { super(info); this.setOutputPath(info.getOutputPath()); } //获取瓦片存储路径。 public String getOutputPath() { return outputPath; } public void setOutputPath(String outputPath) { this.outputPath = outputPath; } public NationalCacheStandardTileSourceInfo outputPath(String outputPath) { this.setOutputPath(outputPath); return this; } 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(); } @Override public TileSourceInfo copy() { return new NationalCacheStandardTileSourceInfo(this); } /** * 指定瓦片格式类型为 Image。 */ @Override public TileType[] getSupportedTileTypes() { return new TileType[] { TileType.Image }; } /** * 返回瓦片格式。 */ public TileSourceType getType() { return TileSourceType.UserDefined; } /** * 指定瓦片存储类型为 UserDefined,所有扩展的瓦片格式都需要设置为此类型。 */ public void setType(TileSourceType type) { if (!(TileSourceType.UserDefined.equals(type))) { throw new IllegalArgumentException(); } super.setType(type); } }