Android 我想在谷歌地图api中每30秒触发一次当前位置
Android 我想在谷歌地图api中每30秒触发一次当前位置,android,Android,需要在此方法中添加 私有void getCurrentLocation(){ //创建位置对象 if(ActivityCompat.checkSelfPermission(this,android.Manifest.permission.ACCESS\u FINE\u LOCATION)!=PackageManager.permission\u已授予和&ActivityCompat.checkSelfPermission(this,android.Manifest.permission.ACCE
需要在此方法中添加
私有void getCurrentLocation(){
//创建位置对象
if(ActivityCompat.checkSelfPermission(this,android.Manifest.permission.ACCESS\u FINE\u LOCATION)!=PackageManager.permission\u已授予和&ActivityCompat.checkSelfPermission(this,android.Manifest.permission.ACCESS\u LOCATION)!=PackageManager.permission\u已授予){
考虑到呼叫
//ActivityCompat#请求权限
//在此处请求缺少的权限,然后覆盖
//public void onRequestPermissionsResult(int-requestCode,字符串[]权限,
//int[]格兰特结果)
//处理用户授予权限的情况。请参阅文档
//对于ActivityCompat,请请求权限以获取更多详细信息。
回来
}
Location Location=LocationServices.FusedLocationApi.getLastLocation(GoogleAppClient);
如果(位置!=null){
//获取经纬度
longitude=location.getLongitude();
纬度=位置。getLatitude();
//将地图移动到指定位置
moveMap();
}
}
如果您只想每隔一段时间运行此方法,请尝试java类定时器
int delay = 5000; // delay for 5 sec.
int interval = 30000; // iterate every 30 sec.
Timer timer = new Timer();
timer.scheduleAtFixedRate(new TimerTask() {
public void run() {
getCurrentLocation // Your method from above ..
}
}, delay, interval);
欢迎光临,您可以看看。更具体地说,你需要使用谷歌服务的GPS定位。Google maps API仅提供地图活动(除非我错了?),也可以根据我们的情况回答您:您只需使用LocationListener每隔30秒自动询问一个事件,注册方法的一个参数在定位之间花费时间。这将更加节能。这将不会使用谷歌服务,这将只使用您询问的LocationListener,但这将超出我的想象,但如果我开始移动,它将显示相同的经度和纬度值……请帮助@Koperko
LoactionListener mLocationListener;
double lat,lng;
inside your OnCreateMethod :
mLocationListener = new LocationListener() {
@Override
public void onLocationChanged(Location location) {
lat = location.getLatitude();
lng = location.getLongitude();
}
@Override
public void onStatusChanged(String s, int i, Bundle bundle) {
}
@Override
public void onProviderEnabled(String s) {
}
@Override
public void onProviderDisabled(String s) {
}
};
if (mLocationManager.isProviderEnabled(LocationManager.GPS_PROVIDER) || mLocationManager.isProviderEnabled(LocationManager.NETWORK_PROVIDER)) {
try {
if (ActivityCompat.checkSelfPermission(getApplicationContext(), android.Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission(getApplicationContext(), android.Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) {
// TOD
// ActivityCompat#requestPermissions
// here to request the missing permissions, and then overriding
// public void onRequestPermissionsResult(int requestCode, String[] permissions,
// int[] grantResults)
// to handle the case where the user grants the permission. See the documentation
// for ActivityCompat#requestPermissions for more details.
// Not implementing Permission Request Measures as User Should not know he is being tracked
}
Criteria c = new Criteria();
c.setAccuracy(Criteria.ACCURACY_FINE);
c.setAltitudeRequired(false);
c.setBearingRequired(false);
c.setSpeedRequired(false);
// mLocationManager.requestSingleUpdate(c, mLocationListener, getMainLooper());
mLocationManager.requestLocationUpdates(REFRESH_TIME, REFRESH_DISTANCE, c, mLocationListener, getMainLooper()); //Check if this can give us location updates on change in locations
} catch (Exception e) {
Log.d(TAG, " Exception e" + e.toString());
}
}else{
Log.d(TAG,"Location permission are disabled in service");
}
now using the Koperko solution
int delay = 5000; // delay for 5 sec.
int interval = 30000; // iterate every 30 sec.
Timer timer = new Timer();
timer.scheduleAtFixedRate(new TimerTask() {
public void run() {
mFragment.getMapAsync(Context); // The object of your own map support fragment
}
}, delay, interval);
inYour onMapReady method
use
LatLng mLatLng=new LatLng(lat,lng);
Marker marker = mGoogleMap.addMarker(new MarkerOptions().position(mLatLng));