我有TrackingService组件,可根据众包来跟踪我所在城市的公交车位置。在TrackingService类中,我有变量pLong, pLat
,以便在onLocatiochChanged()
中计算出它们时存储纬度和经度。 TrackingService在后台运行,数据传输到服务器。
我有一个Map活动来显示总线的位置,在MainActivity中选择的用户(作为过滤器)。
一切都运行良好但是当我尝试在地图活动中显示用户的当前位置时,double lng = ts.pLong;double lat = ts.pLat;
中收到的displayMyLocation()
为0.0
,尽管他们在我修改它们时有值值正在发送到服务器但是当我在displayMyLocation()
中调用它们时它们是0.0
我无法通过将意图传递给地图活动来启动onLocationChanged()
的地图活动。
如何在我的地图活动中获取这些值?
TrackingService类:
public class TrackingService extends Service implements AsyncTaskCallback,
LocationListener {
public double pLong;
public double pLat;
...
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
detectLocation();
return START_STICKY;
}
private void detectLocation() {
lm = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
lm.requestLocationUpdates(LocationManager.GPS_PROVIDER, 30 * 1000, 0,
this);
}
@Override
public void onLocationChanged(Location location) {
if (location != null) {
pLong = location.getLongitude();
pLat = location.getLatitude();
.....
}
}
地图活动:
public class Map extends FragmentActivity implements OnMapReadyCallback {
.....
private void displayMyLocation() {
TrackingService ts = new TrackingService();
double lng = ts.pLong;
double lat = ts.pLat;
LatLng ll = new LatLng(lat,lng);
MarkerOptions markerOpt = new MarkerOptions().title("My Location")
.position(ll);
myLocatMarker = map.addMarker(markerOpt);
}
...
}