簡體   English   中英

Java Android Google Maps更改我之前所在的顏色折線

[英]Java android google maps change color polyline where I was

這就是我繪制折線的方式:

 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 m附近:

double dis = currentLocation.distanceTo(location);

但是它不能正常工作

您可以使用distanceBetween函數計算兩個位置之間的近似距離(以米為單位),還可以計算兩個位置之間最短路徑的初始和最終方位。

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個斜角以內,則返回true。

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));
                    }*/
                }


            }
        });

根據用戶移動的androidgooglemap更新折線

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM