0

いくつかの計算のために、GeoPoint を画面座標に変換し、それらを使って何かを行ってから、GeoPoint に戻す必要があります。

悲しいことに、これらの変換の後、新しい GeoPoint は常に、必要なポイントから (画面上で) 0 ~ 2 mm 離れています。

驚くべきことに、次のコード行はすでに 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

この不正確さを改善する方法はありますか。

4

2 に答える 2

0

GeoPoint変換前と変換後の差を1回計算し、必要なたびに結果に追加でき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`
于 2012-09-24T07:01:59.450 に答える
0

私はこれを試したことはありませんが、ジオポイントをピクセル単位で変換する前に、10 または 100 を掛けてみることができます。このようにして、E6 に丸めたときのエラーが少なくなります。お役に立てば幸いです。

于 2012-09-30T12:29:48.060 に答える