내 프로젝트에 대략적인 코드가 있는데 단추를 누를 때 사용자의 GPS 위치를 얻으려고하고 위치를 GeoPoint로 설정하여 메서드에 전달할 수있게하려고합니다.버튼 클릭시 GPS 위치를 얻으려면 어떻게해야합니까?
이 메서드는 해당 점을 오버레이로 그리는 오버레이 클래스 용입니다. 스택 오버플로 질문에서 일부 코드를 사용했습니다 How can I obtain the current GPS location?. GeoPoint를 배열에 추가 한 다음 해당 배열에서 검색하여 메서드에 추가하도록 프로그램을 설정했습니다. 이 작업을 수행하는 더 좋은 방법이 있거나 배열에 배치하지 않고 포인트를 사용하는 방법이 있습니까?
이
오버레이 첨가 버튼이며 GeoPoint의 배열로부터 입수된다Button startBtn = (Button) findViewById(R.id.startBtn);
startBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View arg0) {
// TODO Auto-generated method stub
getLocation();
tempOverlay = (MapOverlay) listOfOverlays.get(arrayNumber);
tempOverlay.addPoint(points.get(pointCount));
mapView.postInvalidate();
}
}
});
이것은을 locationManager 및 requestUpdates를 생성의 getLocation() 방법이다.
public void getLocation()
{
lm = (LocationManager)getSystemService(Context.LOCATION_SERVICE);
locationListener = new MyLocationListener();
lm.requestLocationUpdates(LocationManager.GPS_PROVIDER,0,0,locationListener);
System.out.println("Get Location Called");
}
이 업데이트를 얻는 MyLocationListener
클래스 내부의 onLocationChanged
방법이며 나는 위치를 일단 나는 업데이트 요청을 중지합니다.
@Override
public void onLocationChanged(Location loc)
{
if(loc != null)
{
Toast.makeText(getBaseContext(),"LocationChanged : Lat: " + loc.getLatitude()+ " Lng: " + loc.getLongitude(),
Toast.LENGTH_SHORT).show();
}
p = new GeoPoint((int) (loc.getLatitude() * 1E6),(int) (loc.getLongitude() * 1E6));
points.add(p);
System.out.println("Point Added to Array");
LBServicesActivity.this.lm.removeUpdates(this);
mc.animateTo(p);
mc.setZoom(18);
}
GeoPoint를 배열에 추가하지 않고 buttonListener의 메서드에 전달하는 방법은 무엇입니까?
안녕하세요 미안했다 그 GPS 클래스의 값을 클릭 그런 때 너무 오랫동안 회신 해주십시오. 아이디어를 주셔서 감사 드리며 노력했지만 매우 잘 작동합니다. 다시 한번 감사드립니다. –