[안드로이드,Android] map 주소 가저오기
2013. 1. 14. 17:30ㆍMobile/Android
반응형
안드로이드 지오코딩 주소가저오기
Map01Activity.java
package kr.co.test.map01; import java.io.IOException; import java.util.List; import java.util.Locale; import android.content.Intent; import android.graphics.drawable.Drawable; import android.location.Address; import android.location.Criteria; import android.location.Geocoder; import android.location.Location; import android.location.LocationListener; import android.location.LocationManager; import android.net.Uri; import android.os.Bundle; import android.view.MotionEvent; import android.view.View;s import android.view.View.OnClickListener; import android.widget.EditText; import android.widget.Toast; import com.google.android.maps.GeoPoint; import com.google.android.maps.MapActivity; import com.google.android.maps.MapController; import com.google.android.maps.MapView; import com.google.android.maps.Overlay; import com.google.android.maps.OverlayItem; public class Map01Activity extends MapActivity { /** Called when the activity is first created. */ Location location; EditText editTextLat, editTexLng, editTextAddress;overlay Geocoder coder; MapView mapview; MapController controller; // 색상 핀꽂기 MyItemizedOverlay itemizedOverlay; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); mapview = (MapView) findViewById(R.id.mapView); controller = mapview.getController(); // 이상적인사이즈 14~16 controller.setZoom(16); MapOverlay mapOverlay = new MapOverlay(); List <Overlay> listOfOverlays = mapview.getOverlays(); listOfOverlays.add(mapOverlay); // 생상 핀 꽂기 ****************** Drawable drawable = getResources().getDrawable(R.drawable.marker); itemizedOverlay = new MyItemizedOverlay(drawable); listOfOverlays.add(itemizedOverlay); // ************************* coder = new Geocoder(this, Locale.KOREA); editTextLat = (EditText) findViewById(R.id.EditTextLat); editTexLng = (EditText) findViewById(R.id.EditTextLng); editTextAddress = (EditText) findViewById(R.id.EditTextAddress); // 위치정보를 취득하기 위한 매니져 LocationManager locationManager = (LocationManager) getSystemService(LOCATION_SERVICE); Criteria criteria = new Criteria(); criteria.setAccuracy(Criteria.NO_REQUIREMENT); criteria.setPowerRequirement(Criteria.NO_REQUIREMENT); String provider = locationManager.getBestProvider(criteria, true); location = locationManager.getLastKnownLocation(provider); updateLocation(location.getLatitude(), location.getLongitude()); locationManager.requestLocationUpdates(provider, 2000, 10, mLocationListener); // &sll=36.430122 , 128.056641 위도 :경도 점을 없앤다 /* * GeoPoint point = new GeoPoint(37579617, 126977041); * mControl.setCenter(point); * * * mMap.setBuiltInZoomControls(true); //줌사진 * * mMap.setSatellite(true); //위성사진 */ } private void updateLocation(double lat, double lng) { String sLocationInfo = ""; if (location != null) { editTextLat.setText(String.valueOf(lat)); editTexLng.setText(String.valueOf(lng)); GeoPoint point = new GeoPoint((int) (lat * 1E6), (int) (lng * 1e6)); controller.animateTo(point); // ********색상 핀 꽂기*********** OverlayItem overlayItem = new OverlayItem(point, null, null); itemizedOverlay.addOverlay(overlayItem); // ******************************** try { List <Address> addresses = coder.getFromLocation(lat, lng, 1); if (addresses != null) { Address addr = addresses.get(0); for (int i = 0; i <= addr.getMaxAddressLineIndex(); i++) { String addLine = addr.getAddressLine(i); sLocationInfo += String.format("%s", addLine); } } } catch (IOException e) { Toast.makeText(getBaseContext(), "찾지못함", Toast.LENGTH_SHORT) .show(); } location.setLatitude(lat); location.setLongitude(lng); } else { sLocationInfo = "위치 를 찾을수 업음"; } editTextAddress.setText(sLocationInfo); } LocationListener mLocationListener = new LocationListener() { public void onLocationChanged(Location location) { // TODO Auto-generated method stub updateLocation(location.getLatitude(), location.getLongitude()); } public void onProviderDisabled(String provider) { // TODO Auto-generated method stub } public void onProviderEnabled(String provider) { // TODO Auto-generated method stub } public void onStatusChanged(String provider, int status, Bundle extras) { // TODO Auto-generated method stub } }; @Override protected boolean isRouteDisplayed() { // TODO Auto-generated method stub return false; } class MapOverlay extends Overlay { @Override public boolean onTouchEvent(MotionEvent e, MapView mapView) { // TODO Auto-generated method stub if(e.getAction()==1){ GeoPoint point = mapView.getProjection().fromPixels((int)e.getX(), (int)e.getY()); updateLocation(point.getLatitudeE6()/1E6, point.getLongitudeE6()/1E6); } return false; } } }MyItemizedOverlay.java
package kr.co.test.map01; import java.util.ArrayList; import android.graphics.drawable.Drawable; import com.google.android.maps.ItemizedOverlay; import com.google.android.maps.OverlayItem; public class MyItemizedOverlay extends ItemizedOverlay <OverlayItem> { private ArrayList <OverlayItem>mOverlays =new ArrayList <OverlayItem>(); public MyItemizedOverlay(Drawable defaultMarker) { super(boundCenterBottom(defaultMarker)); // TODO Auto-generated constructor stub } @Override protected OverlayItem createItem(int i) { // TODO Auto-generated method stub return mOverlays.get(i); } @Override public int size() { // TODO Auto-generated method stub return mOverlays.size(); } public void addOverlay(OverlayItem overlay){ mOverlays.add(overlay); populate(); } }
main.xml
AndroidManifest.xml<EDITTEXT android:layout_width="fill_parent" android:layout_height="wrap_content" android:id="@+id/EditTextLat" android:hint="위도" /> <EDITTEXT android:layout_width="fill_parent" android:layout_height="wrap_content" android:id="@+id/EditTextLng" android:hint="경도" /> <EDITTEXT android:layout_width="fill_parent" android:layout_height="wrap_content" android:id="@+id/EditTextAddress" android:hint="주소" /> <COM.GOOGLE.ANDROID.MAPS.MAPVIEW android:layout_width="fill_parent" android:layout_height="fill_parent" android:id="@+id/mapView" android:apiKey="사용자키" android:clickable="true" android:enabled="true" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /> <uses-permission android:name="android.permission.INTERNET" /> <uses-library android:name="com.google.android.maps" />
반응형
'Mobile > Android' 카테고리의 다른 글
[안드로이드,Android] RatingBar (별점수) (2) | 2013.01.21 |
---|---|
[안드로이드,Android]탭,TabHost 만들기 (0) | 2013.01.15 |
[안드로이드,android]Map apiKey 값 얻기 (0) | 2013.01.14 |
[안드로이드,Android]주민등록번호 검사 (0) | 2013.01.14 |
안드로이드 네트워크 확인 방법 (실시간) (0) | 2013.01.11 |