0

とにかくジオポイントの座標を変更する方法があるのだろうかと思っていました。コンストラクターを除いて、座標を設定する方法を示す関数がドキュメントに見つかりませんでした。これは私にとって厄介です。なぜなら、Geopointの座標を絶えず更新する必要があるからです(Googleマップ上のオブジェクトをたどる)。

ジオポイントの座標を更新または変更できない場合、他のものを使用する必要がありますか?新しいジオポイントを常にインスタンス化する必要がありますか?

また、副次的な質問として。常にループする必要がある(具体的にはデータパケットを検索する)コードをMapActivityのどこに配置すればよいですか?

ありがとう!

4

2 に答える 2

0

GeoPointクラスのドキュメントから:

パブリッククラスGeoPointはjava.lang.Objectを拡張します

緯度と経度のペアを表す不変のクラスで、マイクロ度の整数として格納されます。

不変という用語は、変更できないことを意味します。したがって、値を変更する方法はありません。何度も何度も再現するオーバーヘッドが心配な場合は、特に重いオブジェクトのようには見えませんGeoPoint。必要に応じて、の代わりに、整数の緯度(E6)と経度(E6)の値を保存することもできますGeoPoint。もちろん、int変数は変更可能です(変更可能)。

のどの種類でもActivity、独自のサブクラスのを使用して、継続的にループし、必要なことを実行するワーカーを作成できますAsyncTaskAsyncTaskの使用の説明については、この記事を参照してください。

于 2012-05-29T20:57:41.097 に答える
0

本当に可変が必要GeoPointですか?GeoPointの連続したインスタンスを作成することが、パフォーマンスの問題になると確信していますか?Nateが提案するように、緯​​度と経度をプリミティブ変数に保持し、必要な場合にのみGeoPointに変換できますか、それともそれぞれをGeoPointにする必要がありますか?

変更可能なGeoPointが必要であることが確実な場合は、作成できます。GeoPointクラスはそうではないfinalので、拡張することができます。HashMapただし、注意してください。可変オブジェクトを、、、HashSetまたはその他のハッシュベースのコレクションに入れると、驚くべき(そしてバグが多い)結果になります。

明示的に自分で渡さなくても、そのようなコレクションに入れるAPIに誤って渡さないように注意してください。

import com.google.android.maps.GeoPoint;

public class MutableGeoPoint extends GeoPoint {
    private int latitudeE6, longitudeE6;

    public MutableGeoPoint(int latitudeE6, int longitudeE6) {
        super(0, 0); // the values in the superclass are moot
        this.latitudeE6 = latitudeE6;
        this.longitudeE6 = longitudeE6;
    }

    @Override
    public int getLatitudeE6() {
        return latitudeE6;
    }

    @Override
    public int getLongitudeE6() {
        return longitudeE6;
    }

    public void setLatitudeE6(int value) {
        this.latitudeE6 = value;
    }

    public void setLongitudeE6(int value) {
        this.longitudeE6 = value;
    }

    @Override
    public int hashCode() {
        return 29*latitudeE6 + longitudeE6;
    }

    @Override
    public String toString() {
        return latitudeE6 + "," + longitudeE6;
    }
}

hashCode()メソッドをGoogleのGeoPointクラスと同じになるように変更するように編集されました。

(GeoPointとMutableGeoPointは、等しいと等しいとは比較されません。そのようなことを心配すると、すぐに収穫逓減のポイントに達します。)

于 2012-05-29T22:00:40.667 に答える