Nehalkumar Maheshwari Ответов: 1

Как переместить маркер как автомобиль идет по дороге в android карте


Это мой код. как изменить и модифицировать, а затем получить решение.

частная статические заключительные LocationRequest запрос = LocationRequest.создать()
. setInterval (5000) / / 5 секунд
. setFastestInterval(16) / / 16ms = 60fps
. setPriority(LocationRequest.PRIORITY_HIGH_ACCURACY);

@Ручная коррекция
protected void onCreate(Bundle savedInstanceState) {
super. onCreate(savedInstanceState);
setContentView(R. layout.my_location_demo);

ИД = так().getExtras().и getString("идентификатор");

mMessageView = (виджет TextView) findViewById, чтобы найти(Р. ИД.текст_сообщения);
}

@Ручная коррекция
охраняемых недействительными onResume() {
супер.onResume();
setUpMapIfNeeded();
setUpLocationClientIfNeeded();
mLocationClient.подключить();
}

@Ручная коррекция
общественного недействительными метод onPause() {
супер.методов onPause();
if (mLocationClient != null) {
mLocationClient.отсоединить();
}
}

частная пустота setUpMapIfNeeded() {
// Выполните нулевую проверку, чтобы подтвердить, что мы еще не создали экземпляр карты.
if (mMap = = null) {
// Попробуйте получить карту из SupportMapFragment.
mMap = ((SupportMapFragment) getSupportFragmentManager (). findFragmentById(R. id. map))
.запросах getmap();
// Проверьте, удалось ли нам получить карту.
if (mMap != null) {
// вызов mmap.setMyLocationEnabled(правда);
// вызов mmap.
}
}

}

частный недействительными setUpLocationClientIfNeeded() {
if (mLocationClient = = null) {
mLocationClient = новый LocationClient(
getApplicationContext(),
это, / / ConnectionCallbacks
это); / / OnConnectionFailedListener
}
}

/**
* Кнопка для получения текущего местоположения. Это демонстрирует, как получить текущее местоположение по мере необходимости,
* без необходимости регистрировать LocationListener.
*/
public void showMyLocation(View view) {
if (mLocationClient != null & & amp; mLocationClient. isConnected()) {
Строка msg = "Location =" + mLocationClient.getLastLocation();
Toast. makeText(getApplicationContext (), msg, Toast.LENGTH_SHORT).показать();
}
}

/**
* Реализация {@link LocationListener}.
*/
@Ручная коррекция
public void onLocationChanged(Location location) {
mMessageView.помощью setText("расположение =" + расположение);
если(расположение.getAccuracy() &ЛТ; 100.0 &амп;&амп; локации.getSpeed() &ЛТ; 6.95)
{
вызов mmap.понятно();
новый фон().выполнить(расположение.getLatitude()+"",расположенный по адресу.getLongitude()+"");
м = вызов mmap.addMarker(новый MarkerOptions().установки(новый latlng с(местоположение.getLatitude(),расположение.getLongitude()))
. название ("водитель")
.значок(BitmapDescriptorFactory.fromResource(Р. холст.такси)));
вызов mmap.animateCamera(CameraUpdateFactory.newLatLng(новый latlng с(местоположение.getLatitude(), расположение.getLongitude())));
// animateMarker(м, новый latlng с(местоположение.getLatitude(), расположение.getLongitude()), ложные);
}
}

/**
* Обратный вызов вызывается при подключении к GCore. Реализация {@link ConnectionCallbacks}.
*/
@Ручная коррекция
public void onConnected(Bundle connectionHint) {
mLocationClient.requestLocationUpdates(
ЗАПРОС,
this); / / LocationListener
}

/**
* Обратный вызов вызывается при отключении от GCore. Реализация {@link ConnectionCallbacks}.
*/
@Ручная коррекция
public void onDisconnected() {
// Ничего не делать
}

/**
* Реализация {@link OnConnectionFailedListener}.
*/
@Ручная коррекция
public void onConnectionFailed(результат ConnectionResult) {
// Ничего не делать
}

}

1 Ответов

Рейтинг:
0

Member 13037204

Во-первых, импортируйте то, что вам нужно для рисования линий:

импорт com.google.android.gms.maps.model.Полилиния;
импорт com.google.android.gms.maps.model.PolylineOptions;
Создайте переменные-члены для ArrayList и полилинии:

private ArrayList< latlng> points; / / добавлено
Ломаная линия; / / добавлено
Очки инициализировать в onCreate():

@Ручная коррекция
protected void onCreate(Bundle savedInstanceState) {
super. onCreate(savedInstanceState);

points = new ArrayList< latlng> (); / / добавлено
//...............
Затем в onLocationChanged () добавьте каждую полученную точку в ArrayList:

LatLng latLng = new LatLng(широта, долгота); //у вас уже есть это

points. add (latLng); / / добавлено

redrawLine (); / / добавлено
Исходя из этого ответа, определите свой метод redrawLine ().
Удалите все остальные вызовы addMarker (), так как вы будете вызывать clear () на своей карте, которая удаляет все маркеры и полилинии.

частная пустотная перерисовка(){

googleMap. clear (); / / очищает все маркеры и полилинии

Варианты PolylineOptions = новый PolylineOptions().ширина(5).цвет(цвет.Синий).геодезический(истинный);
for (int i = 0; i < points. size (); i++) {
LatLng point = points. get(i);
варианты.добавить(точка);
}
addMarker (); / / добавить маркер в текущую позицию
line = googleMap. addPolyline(options); / / добавить полилинию
}