MyLocationOverlayを使用して、運転中のユーザーの場所で地図を更新しています。私は通りの名前、都市と州の面で彼らの現在の場所を示すテキストビューを実装しようとしています。これはうまくいきますが、MyLocationOverlayの更新頻度によって地図が遅れて2〜2時間フリーズしているようです。テキストの.setTextメソッドがフリーズしたり、メソッドが呼び出された回数が不明な場合は、私はよく分かりません。市と州の名前でユーザーを更新するための適切な方法は何ですか?私は新しいスレッドを使用していますこれは正しい方法ですか?ここに私のコードはMyLocationOverlayのonLocationChanged方法である:Android:MyLocationOverlayで逆ジオコーディングを行う最良の方法は?
@Override
public synchronized void onLocationChanged(Location location) {
super.onLocationChanged(location);
mLocation = location;
// only move to new position if enabled and we are in an border-area
if (this.isMyLocationEnabled() && animateToCurrentLocation) {
mMapController.animateTo(getMyLocation());
}
this.runOnFirstFix(new Runnable() {
public void run() {
Log.d(TAG, "Running");
if (mLocation != null) {
Geocoder gc = new Geocoder(mContext, Locale.getDefault());
try
{
List<Address> addresses = gc.getFromLocation(mLocation.getLatitude(), mLocation.getLongitude(), 1);
if (addresses != null && addresses.size() > 0)
{
txtStreetAddress.setText(addresses.get(0).getThoroughfare() + " " + addresses.get(0).getLocality() + ", " + addresses.get(0).getAdminArea());
}
} catch (IOException e)
{
}
}
}
});
}
私は別のスレッドでジオコーディングすべきですか?それともUIスレッドで行うのが適切ですか? – user1347026
そのブロッキングコールので、UIスレッドをオフにdefo :) – Dori