Android:MapView Projection不准确

时间:2012-07-28 16:03:25

标签: android android-mapview point projection

由于一些计算,我必须将GeoPoint转换为屏幕坐标,对它们执行某些操作,然后将它们转换回GeoPoint。

可悲的是,在那些转换之后,新的GeoPoint从我想要的点开始在距离0-2毫米(在屏幕上)。

令人惊讶的是,跟随代码行已经改变了GeoPoint。

Projection projection = map.getProjection(); 
Log.d("bevore", geoPoint.getLatitudeE6() +" "+geoPoint.getLongitudeE6());
Point pt = new Point();

projection.toPixels(geoPoint, pt);

geoPoint = projection.fromPixels(pt.x, pt.y);
Log.d("after", geoPoint.getLatitudeE6() +" | "+geoPoint.getLongitudeE6());

输出是:

 D/bevore(31252): 53106803 | 8852244
 D/after(31252): 53106802 | 8852240

有没有办法改善这种不准确性。

2 个答案:

答案 0 :(得分:0)

您可以在转化前后GeoPoint之间计算一次差异,并在每次需要时将其添加到fromPixels的结果中。

Projection projection = map.getProjection();
projection.toPixels(geoPointBefore, pt);
geoPointAfter = projection.fromPixels(pt.x, pt.y);

int diffLatitude  = geoPointBefore.getLatitudeE6()  - geoPointAfter.getLatitudeE6();
int diffLongitude = geoPointBefore.getLongitudeE6() - geoPointAfter.getLongitudeE6();
...
...
...
// Add the difference to GeoPoint objects after conversion `fromPixels`

答案 1 :(得分:0)

我还没试过这个,但是你可以尝试在转换地理点之前以10或100倍数,这样你在转向E6时会有更少的错误。 我希望它会对你有所帮助。