如何将值刷新到onLocationChanged

时间:2018-12-05 17:44:19

标签: android google-maps on-location-changed

我有一张地图,我希望在标记处打印的值在诸如纬度和经度之类的位置发生变化。下面是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 :(得分:0)

根据上面的解释,您在地图上有一些标记,每个标记都有一个标签。标签的内容是通过从另一个类调用test方法来确定的。每次用户位置更改时,您都希望使用test中的新值来更新这些标记的标签。我希望我没错。

您需要引用标记,这些标记是在您首次将标记添加到地图时获得的。您可以将它们存储在列表或地图中,具体取决于您访问它们的方式。例如,如果您需要做的就是更新所有标签,则列表就足够了。如果您还需要获取特定的标记,则希望将其放置在以某些唯一ID为键的地图中,以使您可以轻松访问该确切的标记。

一旦有了这些内容,就可以在onLocationChanged回调中循环遍历所有标记,调用test以获取新值并更新标签。

要更有效地使用设备的电池,您需要切换到Fused Location APIs