Java android google maps изменить цвет полилинии там, где я был - PullRequest
0 голосов
/ 11 апреля 2019

Вот как я рисую полилинию:

 List<LatLng> latLngsList = new ArrayList<>();
            for (LegsItem leg : response.body().getRoutes().get(0).getLegs()) {
                for (StepsItem step : leg.getSteps()) {
                    List<LatLng> latLngs = PolyUtil.decode(step.getGeometry());
                    step.setLatLngs(latLngs);
                    latLngsList.addAll(latLngs);
                }
            }

            Polyline polyline1 = googleMap.addPolyline(new PolylineOptions()
                    .addAll(latLngsList));

Я рисую это на черном цвете, но когда я на ломаной линии (в LatLtg), я хочу изменить цвет на синий.Чтобы определить, нахожусь ли я в точке, я использую следующее:

mMap.setOnMyLocationChangeListener 

и проверяю, находится ли первая невыполненная точка около 2 м:

double dis = currentLocation.distanceTo(location);

Но это не такработать правильно

Ответы [ 2 ]

0 голосов
/ 11 апреля 2019

Определите значение цвета в colors.xml

colors.xml

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <color name="blue">#0000EE</color>
</resources>

и установите цвет следующим образом: -

Polyline line = mMap.addPolyline(new PolylineOptions()
                .addAll(list)
                .color(R.color.blue));

РЕДАКТИРОВАТЬ

mMap.setOnMyLocationChangeListener(new GoogleMap.OnMyLocationChangeListener() {
            @Override
            public void onMyLocationChange(Location location) {

                for (LatLng nLatLng : latLngsList) {

                    double latitude = nLatLng.latitude;
                    double longitude = nLatLng.longitude;
                    double myLat = location.getLatitude();
                    double myLong = location.getLongitude();

                    if (latitude == myLat && longitude == myLong) {


                        Polyline polyline1 = googleMap.addPolyline(new PolylineOptions()
                                .add(nLatLng)
                                .color(R.color.blue));
                    } /*else {
                        Polyline polyline1 = googleMap.addPolyline(new PolylineOptions()
                                .add(nLatLng)
                                .color(R.color.black));
                    }*/
                }


            }
        });

обновление полилинии в соответствии с перемещением пользователя android-googlemaps

0 голосов
/ 11 апреля 2019

Вы можете использовать функцию distanceBeween, которая вычисляет приблизительное расстояние в метрах между двумя точками и, при необходимости, начальную и конечную опоры кратчайшего пути между ними.

public static boolean checkDistance(LatLng oldPosition, LatLng newPosition) {
        float[] results = new float[1];
        Location.distanceBetween(oldPosition.latitude, oldPosition.longitude,
                newPosition.latitude, newPosition.longitude, results);
        return results[0] <= 50.0;
    }

Здесь я установил минимальное расстояние 50 метров. они вернут истину, если ваше текущее местоположение (латлон) находится в пределах 50 метров от вашей полилинии латлон.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...