MyLocationOverlay를 사용하여 운전중인 사용자 위치로지도를 업데이트하고 있습니다. 나는 거리 이름, 도시 및 국가 측면에서 현재 위치를 보여주는 텍스트보기를 구현하려고합니다. 이 모든 것은 정상적으로 작동하지만 MyLocationOverlay의 업데이트 빈도로 인해지도가 지연되거나 2 ~ 2 초 동안 정지되는 것처럼 보입니다. text .setText 메서드로 인해 텍스트가 고정되거나 메서드가 호출되는 횟수가 많은지 확실하지 않습니다. 도시와 주 이름의 사용자 업데이트를 구현하는 적절한 방법은 무엇입니까? 나는 새로운 방법을 사용하고 있습니다.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 호출 스레드를 차단하므로 전화가 끊깁니다. :) – Dori