구글 맵에서 화면을 터치하면 해당 지점의 지리적 좌표를 확인하여 출력하는 예
사용된 화살표 이미지
package test.android.hello;
import java.util.*;
import android.graphics.*;
import android.os.Bundle;
import android.view.*;
import com.google.android.maps.*;
public class GoogleMapActivity extends MapActivity {
MapView mapView;
MapController mc;
GeoPoint p;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.map_layout);
mapView = (MapView) findViewById(R.id.mapview);
mapView.displayZoomControls(true);
mc = mapView.getController();
// 37517180, 127041268 강남구청
String coordinates[] = {"37.517180", "127.041268"};
double lat = Double.parseDouble(coordinates[0]);
double lng = Double.parseDouble(coordinates[1]);
p = new GeoPoint((int)(lat*1E6), (int)(lng*1E6));
mc.animateTo(p);
mc.setZoom(17);
MapOverlay mapOverlay = new MapOverlay();
List<Overlay> listOfOverlays = mapView.getOverlays();
listOfOverlays.clear();
listOfOverlays.add(mapOverlay);
mapView.invalidate();
}
@Override
protected boolean isRouteDisplayed() {
return false;
}
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();
mapView.getProjection().toPixels(p, screenPts);
//위에서 변환한 화면좌표에 화살표 이미지를 그려준다
Bitmap bmp = BitmapFactory.decodeResource(getResources(), R.drawable.arrow);
Paint paint = new Paint();
paint.setAlpha(60);
canvas.drawBitmap(bmp, screenPts.x-bmp.getWidth()/2, screenPts.y, paint);
return true;
}
@Override
public boolean onTouchEvent(MotionEvent event, MapView mapView)
{
if (event.getAction() == event.ACTION_UP) {
// 터치된 화면의 좌표를 지리좌표로 변환한다
GeoPoint p = mapView.getProjection().fromPixels(
(int)event.getX(),
(int)event.getY());
android.util.Log.e("터치 이벤트", "위도:"+p.getLatitudeE6()+", 경도:"+p.getLongitudeE6());
return true;
}
else return false;
}
}
}
AndroidManifest.xml
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/mainlayout"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent" >
<com.google.android.maps.MapView
android:id="@+id/mapview"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:clickable="true"
android:apiKey="0lbzaFTEjuc25uPzbG67FsR1mDuQ7c2jSSj_Gzg"
/>
</RelativeLayout>