我有一张地图,我希望在标记处打印的值在诸如纬度和经度之类的位置发生变化。下面是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;
}
谁知道我该怎么做?谢谢。
答案 0 :(得分:0)
根据上面的解释,您在地图上有一些标记,每个标记都有一个标签。标签的内容是通过从另一个类调用test
方法来确定的。每次用户位置更改时,您都希望使用test
中的新值来更新这些标记的标签。我希望我没错。
您需要引用标记,这些标记是在您首次将标记添加到地图时获得的。您可以将它们存储在列表或地图中,具体取决于您访问它们的方式。例如,如果您需要做的就是更新所有标签,则列表就足够了。如果您还需要获取特定的标记,则希望将其放置在以某些唯一ID为键的地图中,以使您可以轻松访问该确切的标记。
一旦有了这些内容,就可以在onLocationChanged
回调中循环遍历所有标记,调用test
以获取新值并更新标签。
要更有效地使用设备的电池,您需要切换到Fused Location APIs。