【发布时间】:2015-03-04 21:08:00
【问题描述】:
我对 android 很陌生,我正在做一个学校项目,我必须使用谷歌地图。另外我必须跟踪用户位置,当位置改变时,我必须更新数据库中的用户位置。到目前为止,我设法集成了 gmaps,我现在正在处理位置更改。我在我的类上实现了接口 LocationListener,我还重写了 onLocationChanged 方法,该方法不工作的接缝。我错过了什么?谢谢!
public class MapFragment extends Fragment implements LocationListener, DialogManager.OnDialogListener {
private GoogleMap gMap;
private SupportMapFragment smf;
private View v;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
v = inflater.inflate(R.layout.activity_main, container, false);
return v;
}
@Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
FragmentManager fm = getChildFragmentManager();
smf = (SupportMapFragment) fm.findFragmentById(R.id.mainContent);
if (smf == null) {
smf = SupportMapFragment.newInstance();
fm.beginTransaction().replace(R.id.mainContent, smf).commit();
}
}
@Override
public void onResume() {
super.onResume();
if(!LocationUtils.getInstance().isGPSON(this.getActivity())) {
DialogManager.buildAlertMessageNoGps(this.getActivity(), this);
} else {
if(smf!=null) {
gMap = smf.getMap();
if(gMap != null) {
setUpMap();
}
}
}
}
private void setUpMap() {
Location location = LocationUtils.getInstance().getLastKnownLocation(this.getActivity());
LatLng latLng = new LatLng(location.getLatitude(), location.getLongitude());
gMap.setMyLocationEnabled(true);
gMap.animateCamera(CameraUpdateFactory.zoomTo(20));
gMap.addMarker(new MarkerOptions().position(latLng).title("I am here!")); //this works, but it put the market on the last known location, not where is my current gps location ..
gMap.moveCamera(CameraUpdateFactory.newLatLngZoom(latLng, 20));
List <Address> adr = LocationUtils.getInstance().getAddress(latLng, this.getActivity());
String str = adr.get(0).getAddressLine(0);
String city = adr.get(0).getAddressLine(1);
String coutry= adr.get(0).getAddressLine(2);
Toast.makeText(getActivity().getApplicationContext(),"str: "+ str+"\ncity: "+city+"\ncountry: "+country, Toast.LENGTH_LONG).show();
}
@Override
public void onLocationChanged(Location location) {
Toast.makeText(getActivity().getApplicationContext(),"sssCHANGEDsss", Toast.LENGTH_LONG).show(); //this never appear
if(gMap != null) {
LatLng latLng = new LatLng(location.getLatitude(), location.getLongitude());
gMap.animateCamera(CameraUpdateFactory.zoomTo(20));
gMap.addMarker(new MarkerOptions().position(latLng).title("updated!")); //marker title never updates
gMap.moveCamera(CameraUpdateFactory.newLatLngZoom(latLng, 20));
}
}
@Override
public void onButtonClicked(int which) {
switch (which) {
case DialogManager.BUTTON_POSITIVE:
startActivity(new Intent(android.provider.Settings.ACTION_LOCATION_SOURCE_SETTINGS));
break;
}
}
}
【问题讨论】:
标签: android google-maps