구글맵에서 사람모양 아이콘을 만들어서 화면에 찍으면 그 아이콘이 그 위치로 움직임니다.
그래서 그 아이콘이 그려진 곳의 위치값을 구하고 싶은데요
아무리해도 오류만 날뿐 어떻게 해야 할지 모르겠습니다.
밑에 부분은 제가 지금 사용하고 있는 소스의 내용을 적어 놓겠습니다.
package jp.hews.hellomap;
import java.util.List;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Canvas;
import android.graphics.Point;
import android.os.Bundle;
import android.view.Gravity;
import android.view.ViewGroup;
import android.widget.TextView;
import android.widget.ZoomControls;
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.Projection;
public class HelloMapActivity extends MapActivity {
static final String TAG = "HelloMapActivity";
static final int INITIAL_ZOOM_LEVE = 15;
static final int INITIAL_LATITUDE = 35455281;
static final int INITIAL_LONGITUDE = 139629711;
GeoPoint pointP;
TextView vText;
String text;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
MapView map_view = (MapView) findViewById(R.id.mapview);
ZoomControls zoom = (ZoomControls) map_view.getZoomControls();
ViewGroup.LayoutParams layout = new ViewGroup.LayoutParams(
ViewGroup.LayoutParams.FILL_PARENT,
ViewGroup.LayoutParams.FILL_PARENT);
zoom.setLayoutParams(layout);
zoom.setGravity(Gravity.BOTTOM | Gravity.CENTER_HORIZONTAL);
map_view.addView(zoom);
MapController controller = map_view.getController();
GeoPoint point =
new GeoPoint(INITIAL_LATITUDE, INITIAL_LONGITUDE);
controller.setCenter(point);
controller.setZoom(INITIAL_ZOOM_LEVE);
setOverlay(point);
IconOverlay d = new IconOverlay();
text=d.getStr();
vText = (TextView)findViewById(R.id.text1);
vText.setText(text);
}
protected boolean isRouteDisplayed() {
return false;
}
private void setOverlay(GeoPoint point) {
/
Bitmap icon = BitmapFactory.decodeResource(getResources(),
R.drawable.man);
IconOverlay overlay = new IconOverlay(icon, point);
MapView map_view = (MapView) findViewById(R.id.mapview);
List<Overlay> overlays = map_view.getOverlays();
overlays.add(overlay);
}
private class IconOverlay extends Overlay {
Bitmap mIcon;
int mOffsetX;
int mOffsetY;
GeoPoint mPoint;
IconOverlay(Bitmap icon, GeoPoint initial) {
mIcon = icon;
mOffsetX = 0 - icon.getWidth() / 2;
mOffsetY = 0 - icon.getHeight() / 2;
mPoint = initial;
}
@Override
public boolean onTap(GeoPoint point, MapView mapView) {
mPoint = point;
return super.onTap(point, mapView);
}
@Override
public void draw(Canvas canvas, MapView mapView,
boolean shadow) {
super.draw(canvas, mapView, shadow);
if (!shadow) {
Projection projection = mapView.getProjection();
Point point = new Point();
projection.toPixels(mPoint, point);
point.offset(mOffsetX, mOffsetY);
canvas.drawBitmap(mIcon, point.x, point.y, null);
int a=mPoint.getLatitudeE6();
b = Integer.toString(a);
}
}
};
}




Projection을 이용하면.. 픽셀 좌표와 위경도 좌표 변환이 가능합니다.