안드로이드 맵을 연동하고 제가 터치한 위치의 위도와 경도가 표시되게 하고 싶은데요. 소스 부분에는 에러는 없지만 실행을 하면 종료가 됩니다. 해결방법을 몇일째 고민하고 있는데 잘 모르겠어서 이렇게 글을 올립니다,
소스 부분입니다.
package com.example.kim;
import java.util.List;
import android.annotation.SuppressLint;
import android.app.Activity;
import android.graphics.*;
import android.location.Location;
import android.os.Bundle;
import com.example.kim.R;
import com.google.android.gms.maps.CameraUpdateFactory;
import com.google.android.gms.maps.GoogleMap;
import com.google.android.gms.maps.MapFragment;
import com.google.android.gms.maps.model.BitmapDescriptorFactory;
import com.google.android.gms.maps.model.LatLng;
import com.google.android.gms.maps.model.Marker;
import com.google.android.gms.maps.model.MarkerOptions;
import com.google.android.gms.maps.model.Polyline;
import com.google.android.gms.maps.model.PolylineOptions;
import com.google.android.maps.*;
import android.text.InputType;
import android.view.Menu;
import android.view.MotionEvent;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;
public class MainActivity extends MapActivity implements View.OnClickListener {
static final LatLng position = new LatLng(37.509509,126.898368);
private double lat;
private double lng;
private LatLng position1;
EditText ed1, ed2;
Button bt1, bt2;
private GoogleMap map;
private Marker Marker;
private Marker Marker1;
MapView mapView;
MapController mc;
GeoPoint p;
@SuppressLint({"NewApi","NewApi"})
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
map = ((MapFragment)getFragmentManager().findFragmentById(R.id.map)).getMap();
Marker = map.addMarker(new MarkerOptions().position(position).icon(BitmapDescriptorFactory.fromResource(R.drawable.star3)));
map.moveCamera(CameraUpdateFactory.newLatLngZoom(position,17));
bt1 = (Button)findViewById(R.id.button1);
bt1.setOnClickListener(this);
bt2 = (Button)findViewById(R.id.button2);
bt2.setOnClickListener(this);
mapView.displayZoomControls(true);
mc = mapView.getController();
String coordinates[] = {"37.509509", "126.898368"};
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> listOverlay = mapView.getOverlays();;
listOverlay.clear();
listOverlay.add(mapOverlay);
mapView.invalidate();
}
@Override
protected boolean isRouteDisplayed() {
// TODO Auto-generated method stub
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 screenPoint = new Point();
mapView.getProjection().toPixels(p, screenPoint);
Bitmap bmp = BitmapFactory.decodeResource(getResources(), R.drawable.star3);
Paint paint = new Paint();
paint.setAlpha(60);
canvas.drawBitmap(bmp, screenPoint.x-bmp.getWidth()/2, screenPoint.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());
//mapView.getController().animateTo(p);
//Toast.makeText(getBaseContext(), p.getLatitudeE6() / 1E6 + "," + p.getLongitudeE6() / 1E6 , Toast.LENGTH_SHORT).show();
return true;
}
else return false;
}
}
public void remove(){
map.clear();
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
/*
public void clickButton(View v) {
if( v.getId() == R.id.button1 ) {
remove();
Marker = map.addMarker(new MarkerOptions().position(position));
map.moveCamera(CameraUpdateFactory.newLatLngZoom(position,17));
}
else if(v.getId() == R.id.button2) {
LatLng position1 = new LatLng(lat, lng);
ed1 = (EditText)findViewById(R.id.EditText1);
ed2 = (EditText)findViewById(R.id.EditText2);
lat = Double.parseDouble(ed1.getText().toString());
lng = Double.parseDouble(ed2.getText().toString());
remove();
Marker = map.addMarker(new MarkerOptions().position(position1));
map.moveCamera(CameraUpdateFactory.newLatLngZoom(position1,7));
break;
}
}
*/
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
switch(v.getId()){
case R.id.button1:
remove();
Marker = map.addMarker(new MarkerOptions().position(position).icon(BitmapDescriptorFactory.fromResource(R.drawable.star3)));
map.moveCamera(CameraUpdateFactory.newLatLngZoom(position,17));
break;
case R.id.button2:
LatLng position1 = new LatLng(lat, lng);
ed1 = (EditText)findViewById(R.id.EditText1);
ed2 = (EditText)findViewById(R.id.EditText2);
lat = Double.parseDouble(ed1.getText().toString());
lng = Double.parseDouble(ed2.getText().toString());
remove();
Marker = map.addMarker(new MarkerOptions().position(position1).icon(BitmapDescriptorFactory.fromResource(R.drawable.star5)));
map.moveCamera(CameraUpdateFactory.newLatLngZoom(position1,7));
break;
}
}
}
LogCat 부분도 올려봅니다.
