Java 如何通过单击按钮获得GPS位置?
我对我的项目有一些粗略的代码,我试图在按下按钮时获得用户的GPS位置,我希望该位置是一个地质点,然后我可以传递给一个方法 该方法适用于在该点绘制覆盖的覆盖类。我使用了一些来自堆栈溢出问题的代码。我设置了程序,以便将地质点添加到阵列中,然后从该阵列中检索并添加到方法中。是否有更好的方法来实现这一点,或者是否有任何方法可以在不将点放入数组的情况下使用点 这是添加叠加并从阵列获取地质点的按钮:Java 如何通过单击按钮获得GPS位置?,java,android,google-maps,gps,overlay,Java,Android,Google Maps,Gps,Overlay,我对我的项目有一些粗略的代码,我试图在按下按钮时获得用户的GPS位置,我希望该位置是一个地质点,然后我可以传递给一个方法 该方法适用于在该点绘制覆盖的覆盖类。我使用了一些来自堆栈溢出问题的代码。我设置了程序,以便将地质点添加到阵列中,然后从该阵列中检索并添加到方法中。是否有更好的方法来实现这一点,或者是否有任何方法可以在不将点放入数组的情况下使用点 这是添加叠加并从阵列获取地质点的按钮: Button startBtn = (Button) findViewById(R.id.startBtn)
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();
}
}
});
这是getLocation()方法,用于创建locationManager和RequestUpdate
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);
}
如何将该地质点传递给buttonListener中的方法,而不将其添加到数组中 创建一个GPS类,该类在位置更改时更新,类似这样:
public class GPSData {
private static double latitude;
/**
* @return the latitude
*/
public static double getLatitude() {
return latitude;
}
/**
* @param latitude the latitude to set
*/
public static void setLatitude(double l) {
latitude = l;
}
private static double longitude;
/**
* @return the longitude
*/
public static double getLongitude() {
return longitude;
}
/**
* @param d the longitude to set
*/
public static void setLongitude(double d) {
longitude = d;
}
}
public static class MyLocationListener implements LocationListener {
public void onLocationChanged(Location location) {
setAccuracy(location.getAccuracy());
setLongitude(location.getLongitude());
setLatitude(location.getLatitude());
}
@Override
public void onProviderDisabled(String provider) {
}
@Override
public void onProviderEnabled(String provider) {
}
@Override
public void onStatusChanged(String provider, int status, Bundle extras) {
}
}
然后,当用户单击按钮访问该GPS等级的值时Hi抱歉,我花了这么长时间才回复。谢谢你的主意,我试过了,效果很好。再次感谢。