Я сделал приложение, в котором местоположение пользователя выбирается через каждые 10 секунд после нажатия кнопки запуска, а полилиния рисуется от старого к новому местоположению до тех пор, пока кнопка остановки не будет нажат. теперь проблема в том, что код полилинии находится внутри функции запуска, на карте нет линии. но если я поместил этот код вне функции запуска, он работает нормально (например, когда я снова нажимаю кнопку запуска, я получаю полилинию), но я не хочу нажимать кнопку каждый раз, я хочу, чтобы эта строка была используя собственный таймер.Нарисуйте полилинию каждые 10 секунд на карте google в andriod
вот мой код
track_record.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(getApplication(), "Your Tracking is started now", Toast.LENGTH_SHORT).show();
///////*************************************////////
// create class object
gps = new GPSTracker(MapsActivity.this);
timer.scheduleAtFixedRate(new TimerTask() {
@SuppressLint("DefaultLocale")
@TargetApi(Build.VERSION_CODES.GINGERBREAD)
@Override
public void run() {
runOnUiThread(new Runnable() {
@Override
public void run() {
LatLng current = new LatLng(latitude = gps.getLatitude(),longitude = gps.getLongitude());
if (begin == 0) {
fixedBegin = current;
// create marker
MarkerOptions marker = new MarkerOptions().position(fixedBegin).title("Begin ");
// Changing the color babyyy
marker.icon(BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_RED));
// adding marker
mMap.addMarker(marker);
// Not working here, but should be
if(Flag==0) //when the first update comes, we have no previous points,hence this
{
prev=current;
Flag=1;
}
CameraUpdate update = CameraUpdateFactory.newLatLngZoom(current, 16);
mMap.animateCamera(update);
mMap.addPolyline((new PolylineOptions())
.add(prev, current).width(6).color(Color.BLUE)
.visible(true));
prev=current;
current = null;
}
begin++;
Log.i("OK", "lat------ " + latitude);
Log.i("OK", "lng-------- " + longitude);
arrLat.add(latitude);
arrLng.add(longitude);
//////////// TRYING ///////////
// And it Worked here
/*
if(Flag==0) //when the first update comes, we have no previous points,hence this
{
prev=current;
Flag=1;
}
CameraUpdate update = CameraUpdateFactory.newLatLngZoom(current, 16);
mMap.animateCamera(update);
mMap.addPolyline((new PolylineOptions())
.add(prev, current).width(6).color(Color.BLUE)
.visible(true));
prev=current;
current = null;
*/
}
});
}
}, 0, TIME_INTERVAL);
// check if GPS enabled
if (gps.canGetLocation()) {
latitude = gps.getLatitude();
longitude = gps.getLongitude();
String longlat = String.valueOf(latitude) + ":" + String.valueOf(longitude);
cordsList.add(longlat);
// \n is for new line
Toast.makeText(getApplicationContext(), "Your Location is - \nLat: " + latitude + "\nLong: " + longitude, Toast.LENGTH_LONG).show();
} else {
Toast.makeText(getApplicationContext(), "Sorry cant get location", Toast.LENGTH_LONG).show();
// can't get location
// GPS or Network is not enabled
// Ask user to enable GPS/network in settings
// gps.showSettingsAlert();
}
Log.i("Finall", "Location-> " + cordsList.toString());
}
}
);
: откуда я получаю 'listpoint? –
Мы рассматриваем listPoint список широт и долгот. – Singh
правый. можете ли вы указать, где я должен положить этот код обработчика? как внутри меня запускает функция или только внутри кнопки? –