Как обновить значения в onLocationChanged - PullRequest
0 голосов
/ 05 декабря 2018

У меня есть карта, и я хочу, чтобы значения, которые я печатал на маркерах, менялись во время расположения, например, широта и долгота. Ниже это onLocationChanged

Location location = locationManager.getLastKnownLocation(LocationManager.GPS_PROVIDER);
            LocationListener locationListener = new LocationListener() {
                public void onLocationChanged(Location location) {

                    mGoogleMap.setInfoWindowAdapter(new CustomInfoWindowAdapter(Tab2Map.this.getActivity()));
                    LatLng latlng = new LatLng(location.getLatitude(), location.getLongitude());
                    String snippet = "SignalStrength:"+current+
                            '\n'+"Rsrp: " +MapRsrp+'\n'+"Rsrq: "+MapRsrq+'\n'+"Rssnr: "+MapRssnr+'\n'+latlng.toString();
                    mGoogleMap.addMarker(new MarkerOptions().position(latlng).title("Signal Info").snippet(snippet).icon(BitmapDescriptorFactory.defaultMarker(color)));
                    CameraPosition position = CameraPosition.builder().target(latlng).zoom(16).bearing(0).build();
                    mGoogleMap.moveCamera(CameraUpdateFactory.newCameraPosition(position));
                }

                @Override
                public void onStatusChanged(String provider, int status, Bundle extras) {}

                @Override
                public void onProviderEnabled(String provider) {}

                @Override
                public void onProviderDisabled(String provider) {}
            };

Значения, которые я хочу обновитьэто в String snippet значение.Эти значения я беру из другого класса, используя функцию ниже.

public void test(int LteSignalStrength,int LteRsrp,int LteRsrq,int LteRssnr,int LteCqi){
        MapRsrp=LteRsrp;
        MapRsrq=LteRsrq;
        MapRssnr=LteRssnr;
        MapCqi=LteCqi;
    }

Кто-нибудь знает, как я могу это сделать? Спасибо.

1 Ответ

0 голосов
/ 05 декабря 2018

Исходя из вашего пояснения выше, у вас есть несколько маркеров на карте, каждый с меткой.Содержимое метки определяется путем вызова метода test из другого класса.Каждый раз, когда местоположение пользователя изменяется, вы хотите обновить метки этих маркеров новыми значениями от test.Надеюсь, я правильно понял.

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

Как только вы его получите,при обратном вызове onLocationChanged вы будете перебирать все свои маркеры, вызывать test для получения новых значений и обновлять метки.

Для более эффективного использования батареи устройства вам необходимохотите переключиться на API-интерфейсы Fused Location .

...