使用产品:supermap-imobile-9.1.0-153-android-zip-chs
数据类型: 文件型 smwu
问题详细描述:
计算两个 几何点(GeoPoint)的距离,计算出来的结果不对。
现在的问题是:Geometrist.distance() 在没有转换坐标系之前确实是以度为单位的结果,转换后的结果是为米单位的,
但是跟使用测地线方法(Geometrist.computeGeodesicDistance)得出的结果或者单纯计算两个个GPS点相差甚远 ,是因为坐标系转换问题吗?
现在的地图坐标系为 Longitude / Latitude Coordinate System---GCS_China_2000
代码如下:
//连续点击的两个点
GeoPoint preGeo = new GeoPoint(prePoint);
GeoPoint lastGeo = new GeoPoint(point2D);
// 地理坐标系下 单位 度
double geoDistance = Geometrist.distance(new GeoPoint(prePoint), new GeoPoint(point2D));
//转换为 平面坐标系
boolean convert = CoordSysTranslator.convert(preGeo, mMapControl.getMap().getPrjCoordSys(),
new PrjCoordSys(PrjCoordSysType.PCS_SPHERE_MERCATOR),
new CoordSysTransParameter(),
CoordSysTransMethod.MTH_GEOCENTRIC_TRANSLATION);
boolean convert1 = CoordSysTranslator.convert(lastGeo, mMapControl.getMap().getPrjCoordSys(),
new PrjCoordSys(PrjCoordSysType.PCS_SPHERE_MERCATOR),
new CoordSysTransParameter(),
CoordSysTransMethod.MTH_GEOCENTRIC_TRANSLATION);
// 墨卡托 平面坐标系 下 单位 米
double convertDistanace = Geometrist.distance(preGeo,lastGeo);
//计算测地线 米
Point2Ds point2Ds = new Point2Ds();
point2Ds.add(prePoint);
point2Ds.add(point2D);
double pointsDistance = Geometrist.computeGeodesicDistance(point2Ds, 6378137, 0.0033528107);
//单纯计算 两个 GPS的 距离
Gps preGps = new Gps(prePoint.getY(),prePoint.getX());
Gps gps = new Gps(point2D.getY(),point2D.getX());
float[] result = new float[3];
Location.distanceBetween(preGps.getWgLat(),preGps.getWgLon(),gps.getWgLat(),gps.getWgLon(),result);
double gpsDistance = result[0];
String format = String.format("Geometrist.distance[%1$f] Geometrist.computeGeodesicDistance[%2$f] distanceBetween[%3$f]convertDistanace[%4$f],地图坐标系:%5$s", geoDistance, pointsDistance, gpsDistance,convertDistanace,mMapControl.getMap().getPrjCoordSys().getName());
log(BMapToolActivity.class.getSimpleName() + "", "tapSingle ->"+format);
希望得到解决。谢谢