我在我的应用中使用位置服务。如果我通过DDMS将经度和纬度发送到模拟器,蓝点会动画到那里。但如果我关闭应用程序并重新启动,蓝点似乎不会。如果你看到蓝点,你必须发送新的经度和纬度。 我希望每次应用开始时都显示蓝点。
我该怎么办?
的onCreate:
mc = mapView.getController();
mapView.setBuiltInZoomControls(true);
mc.setZoom(15);
myLocOverlay = new MyLocationOverlay(this, mapView);
mapView.getOverlays().add(myLocOverlay);
myLocOverlay.runOnFirstFix(new Runnable() {
public void run() {
mc.animateTo(myLocOverlay.getMyLocation());
}
});
mapView.postInvalidate();
lm = (LocationManager)getSystemService(Context.LOCATION_SERVICE);
Criteria criteria = new Criteria();
provider = lm.getBestProvider(criteria, false);
Location location = lm.getLastKnownLocation(provider);
if (location != null) {
onLocationChanged(location);
}
onLocationChanged(位置位置)
String PK="";
double lat = location.getLatitude();
double lng = location.getLongitude();
Geocoder gc = new Geocoder(this,Locale.getDefault());
try{
List<Address> adresler = gc.getFromLocation(lat, lng, 1);
StringBuilder sb = new StringBuilder();
if(adresler.size()>0){
Address adres = adresler.get(0);
boolean sayi = false;
for(int i=0;i<adres.getMaxAddressLineIndex();i++){
if(i!=2){
sb.append(adres.getAddressLine(i)).append("\n");
}
else{
String full = adres.getAddressLine(i).toString();
char chars[] = full.toCharArray();
for(int k=0;k<chars.length;k++){
sayi = Character.isDigit(chars[k]);
if(sayi){
PK=PK+chars[k];
}
}
}
}
adresString = sb.toString();
new gpsYerBilgisiAS(PK).execute();
}
}
catch(IOException e){
}
}
onResume和onPause
@Override
protected void onResume() {
super.onResume();
lm.requestLocationUpdates(provider, 400, 1, this);
myLocOverlay.enableMyLocation();
}
@Override
protected void onPause() {
super.onPause();
lm.removeUpdates(this);
myLocOverlay.disableMyLocation();
}
答案 0 :(得分:1)
让你的onResume()
像这样:
protected void onResume() {
....
myLocOverlay = new MyLocationOverlay(this, mapView);
myLocOverlay.enableMyLocation();
mapView.getOverlays().add(myLocOverlay);
myLocOverlay.runOnFirstFix(new Runnable() {
public void run() {
mc.animateTo(myLocOverlay.getMyLocation());
}
});
....
}
它会以你想要的方式工作。这就是我在自己的应用程序中拥有它的方式。
答案 1 :(得分:1)
在模拟器中,每次要调用onLocationChanged方法时都必须发送位置。 在设备上,如果GPS打开,它会自动完成。但是,当您的设备通过GPS或网络接收位置数据时,我只会显示“蓝点”。