도저히 못하겠네요.. 소스는 건드리다가 다 꼬이고 망했습니다..
포기할까봐요..
package hs.test.pro1;
import java.io.IOException;
import java.util.List;
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.MyLocationOverlay;
import com.google.android.maps.Overlay;
import com.google.android.maps.MapView.LayoutParams;
import android.app.Activity;
import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Canvas;
import android.graphics.Paint;
import android.graphics.Point;
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.os.Bundle;
import android.util.Log;
import android.view.MotionEvent;
import android.view.View;
import android.widget.LinearLayout;
import android.widget.TextView;
import android.widget.Toast;
public class sub5 extends MapActivity implements LocationListener {
MapView mapView;
MapController mc;
GeoPoint p;
LocationManager locationMgr;
Context context = null;
TextView t;
Location location;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.sub5);
mapView = (MapView) findViewById(R.id.mapview);
mapView.setBuiltInZoomControls(true);
mapView.displayZoomControls(true);
//mapView.setStreetView(false);
//mc.setZoom(17);
mc = mapView.getController();
locationMgr = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
Criteria criteria = new Criteria();
criteria.setAccuracy(Criteria.NO_REQUIREMENT);
criteria.setPowerRequirement(Criteria.NO_REQUIREMENT);
String best = locationMgr.getBestProvider(criteria, true);
//베스트 근접 공급자
locationMgr.requestLocationUpdates(best, 1000, 0, this); //내 위치에 로케이팅
location = locationMgr.getLastKnownLocation(best);
Toast.makeText(this, " 현재 위치를 표시합니다 ", Toast.LENGTH_SHORT).show();
MapOverlay mapOverlay = new MapOverlay();
List<Overlay> listOfOverlays = mapView.getOverlays();
listOfOverlays.clear();
listOfOverlays.add(mapOverlay);
mapView.invalidate();
}
@Override
protected boolean isRouteDisplayed() {
return true;
}
public void onLocationChanged(Location location) {
//double lat = location.getLatitude();
//double lon = location.getLongitude();
//GeoPoint p = new GeoPoint((int)(lat * 1E6), (int)(lon*1E6)); //현재위치(처음) 위도,경도
mc.animateTo(p);
mc.setZoom(18);
}
public void onProviderDisabled(String provider) {}
public void onProviderEnabled(String provider) {}
public void onStatusChanged(String provider, int status, Bundle extras) {}
class MapOverlay extends com.google.android.maps.Overlay {
@Override
public boolean draw(Canvas canvas, MapView mapView,
boolean shadow, long when) {
super.draw(canvas, mapView, shadow);
//지리좌표를 화면픽셀좌표로 변환
Point screenPts = new Point();
if(p != null) mapView.getProjection().toPixels(p, screenPts);
//위에서 변환한 화면좌표에 화살표 이미지를 그려준다
Bitmap bmp = BitmapFactory.decodeResource(getResources(), R.drawable.ic_launcher);
Paint paint = new Paint();
paint.setAlpha(60);
canvas.drawBitmap(bmp, screenPts.x-bmp.getWidth()/2, screenPts.y, paint);
return true;
}
boolean isTouched;
@Override
public boolean onTouchEvent(MotionEvent event, MapView mapView) {
locationMgr = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
Criteria criteria = new Criteria();
criteria.setAccuracy(Criteria.NO_REQUIREMENT);
criteria.setPowerRequirement(Criteria.NO_REQUIREMENT);
String best = locationMgr.getBestProvider(criteria, true);
location = locationMgr.getLastKnownLocation(best);
double la, lo;
if (location != null) {
la = location.getLatitude();
lo = location.getLongitude();
//GeoPoint sp = mapView.getProjection().fromPixels((int)la, (int)lo);
Location locationA = new Location("A");
locationA.setLatitude(la);
locationA.setLongitude(lo);
if(event.getAction()== MotionEvent.ACTION_DOWN) {
isTouched = true;
}else if(event.getAction()== MotionEvent.ACTION_MOVE) {
isTouched = false;
}
if (event.getAction() == MotionEvent.ACTION_UP && isTouched) {
// 터치된 화면의 좌표를 지리좌표로 변환한다
GeoPoint touchGP = mapView.getProjection().fromPixels(
(int)event.getX(),(int)event.getY());
Location locationB = new Location("B");
locationB.setLatitude(touchGP.getLatitudeE6());
locationB.setLongitude(touchGP.getLongitudeE6());
double distance;
String meter;
distance = locationA.distanceTo(locationB);
meter = Double.toString(distance/1000);
//android.util.Log.e("터치 이벤트", "위도:"+touchGP.getLatitudeE6()+", 경도:"+touchGP.getLongitudeE6());
Toast.makeText(getBaseContext(),
meter
,Toast.LENGTH_SHORT).show();
t=(TextView)findViewById(R.id.maptextView1); //맵 텍스트뷰에 나타냄
t.setText(""+
touchGP.getLatitudeE6() / 1E6 + "," +
touchGP.getLongitudeE6() /1E6);
p = touchGP;
isTouched = false;
return false;
}}
return false;
}
}
}




;; 거리구하는 메소드 있습니다
DOC에서 찾아보세요
distans...어쩌고 저쩌고 입니다.;;