package com.jiuqi.mobile.lbs.intf.oth;
public abstract class GisUtil {
private final static GisUtil gu = new GisUtilImpl();
public static GisUtil instance(){
return gu;
}
public abstract GisPoint correction(GisPoint point, GisCoordinateType gcType);
//=========================================
static class GisUtilImpl extends GisUtil{
@Override
public GisPoint correction(GisPoint point, GisCoordinateType gcType) {
switch (gcType) {
case WGS_84:
if(point.getGcType()==GisCoordinateType.WGS_84){
return point;
}
else{
throw new GisCorrectionException("暂时不支持转换标准:"+point.getGcType()+" to "+gcType);
}
case GCJ_02:
switch (point.getGcType()) {
case WGS_84:
return GaoDeGisUtil.correction(point.getLongitude(), point.getLatitude());
case GCJ_02:
return point;
// case BaiDu:
// break;
default:
throw new GisCorrectionException("暂时不支持转换标准:"+point.getGcType()+" to "+gcType);
}
case BaiDu:
switch (point.getGcType()) {
case WGS_84:
return BaiDuGisUtil.correction_84(point.getLongitude(), point.getLatitude());
case GCJ_02:
return BaiDuGisUtil.correction_02(point.getLongitude(), point.getLatitude());
case BaiDu:
return point;
default:
throw new GisCorrectionException("暂时不支持转换标准:"+point.getGcType()+" to "+gcType);
}
default:
throw new GisCorrectionException("暂时不支持转换标准:"+point.getGcType()+" to "+gcType);
}
}
}
}