0

이 문제가 있습니다.Google Map Android API v2를 사용하여 Android의지도에서 특정 위치를 표시하는 방법은 무엇인가요?

지도의 특정 위치를 Android에서 표시하고 싶습니다. 사용자가 텍스트 편집에서 인도를 입력 한 경우처럼지도에 인도를 표시하려면 어떻게해야합니까? 나는 기본적으로 어떤 위치의 위도와 경도를 얻는 지 알고 싶다. 그것은 작동하지 않습니다

public class Map extends Activity{ 
private GoogleMap map; 
private LatLng myLoc; 

@SuppressLint("NewApi") protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.map); 
    Intent i=getIntent(); 
    String loc=i.getStringExtra("loc"); 
    map = ((MapFragment) getFragmentManager().findFragmentById(R.id.map)).getMap(); 
    Geocoder geoCoder = new Geocoder(getBaseContext(), Locale.getDefault()); 

    try { 
     List<Address> addresses = geoCoder.getFromLocationName(
      loc, 5); 

     if (addresses.size() > 0) { 
      myLoc = new LatLng(
        (int) (addresses.get(0).getLatitude() * 1E6), 
        (int) (addresses.get(0).getLongitude() * 1E6)); 
      map.setMapType(GoogleMap.MAP_TYPE_NORMAL); 
      CameraUpdate update = CameraUpdateFactory.newLatLngZoom(myLoc, 14); 
      map.animateCamera(update); 
     }  
    } catch (IOException e) { 
     e.printStackTrace(); 
    } 
} 
} 

:

내 코드를 도와주세요. 사용

map.setMyLocationEnabled(true); 

파란색 원이지도에 출연한다

+0

은 어떤 오류가 있습니까? 이 코드의 결과는 무엇입니까? – matreshkin

+0

@matreshkin 예, NetworkOnMainThreadException; 다른 스레드를 사용하여 차단 작업을 수행하십시오. –

+0

코드는 Android API v2 용이므로 제목과 태그를 편집했습니다. –

답변

0

제발 도와주세요. 현재 위치가 표시됩니다.

1

Geocoder 기능이 차단되어 네트워크를 사용하는 것처럼 보입니다. onCreate가 메인 스레드에서 실행 중이므로 you can get this error(in older versions of android). 따라서 AsyncTask을 만들고 지오 코더의 기능을 AsyncTask.doInBackground()로 이동해야합니다.

그리고 AsyncTask.onPostExecute()에서 다른 작업을 Google지도로 수행해야합니다. (이 경우 메인 스레드에 표시되며, 어떻게 표시되어야합니까?)