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); } } } }