miałem stosunkowo podobny problem z RPG GPS byłem w pracy i oto kilka rzeczy, zauważyłem:
Po pierwsze, może to potrwać do lokalizacji początkowo można znaleźć, co spowodowałoby ten problem, ponieważ sprawdzasz tylko, czy lokalizacja jest pusta.
Warto również upewnić się, usług lokalizacyjnych urządzenia są faktycznie włączone zanim cokolwiek:
private boolean doLocationsCheck(){
if(!checkLocationEnabled()){
final CharSequence[] items = {"Yes", "No"};
AlertDialog.Builder builder = new AlertDialog.Builder(mContext);
builder.setCancelable(false);
builder.setTitle("Location must be enabled to play this game! Would you like to enable it now?");
builder.setItems(items, new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int item) {
final int i = item;
runOnUiThread(new Runnable() {
public void run() {
if(i == 0){
Intent intent = new Intent(Settings.ACTION_LOCATION_SOURCE_SETTINGS);
startActivity(intent);
quit();
}
else{
quit();
}
}
});
}
}).show();
AlertDialog alert = builder.create();
return false;
}
else {
return true;
}
}
private boolean checkLocationEnabled(){
LocationManager service = (LocationManager) getSystemService(LOCATION_SERVICE);
boolean enabled = service.isProviderEnabled(LocationManager.GPS_PROVIDER) || service.isProviderEnabled(LocationManager.NETWORK_PROVIDER);
return enabled;
}
Po Zrobiłem pewien dostawcy są dostępne konfiguracja I połączenie tak:
private void setupLocation() {
LocationManager locationManager = (LocationManager) this.getSystemService(Context.LOCATION_SERVICE);
LocationListener locationListener = new LocationListener() {
public void onLocationChanged(final Location location) {
runOnUiThread(new Runnable() {
public void run() {
mLocation = location;
//Log.d(TAG, "Latitude: " + location.getLatitude() + " - Longitude: " + location.getLongitude());
saveLocation();
}
});
}
public void onStatusChanged(String provider, int status, Bundle extras) {}
public void onProviderEnabled(String provider) {}
public void onProviderDisabled(String provider) {}
};
//Can set to GPS or network, whichever is available
locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, locationListener);
}
Lokalizacja jest następnie ustawiana w zmiennej globalnej, gdy jest aktualizowana, a następnie zapisywana w preferencjach. W ten sposób, w przypadku gdy dostawcy są aktywowani, ale trochę czasu zajmuje im odzyskanie lokalizacji, użytkownik może nadal korzystać z aplikacji z ich ostatnią znaną lokalizacją, która była przechowywana w aplikacji (nie ma zastosowania po raz pierwszy w programie prowadzony jest).
Wiem, że wiele tam pominąłem, ale doszedłem do wniosku, że nie było to konieczne, ponieważ było to albo oczywiste, albo już wyjaśnione w poprzedniej odpowiedzi.
Pozdrawiam ~
Być może wyszukiwanie google nie jest gotowe w momencie wpisywania instrukcji if? Używam google maps javascript api i istnieje funkcja wywołania zwrotnego, która jest wywoływana po zakończeniu wyszukiwania. Nie wiem, jak to działa na Androidzie. –
Skorzystaj z [LINK] (http://stackoverflow.com/questions/9990209/cant-mark-while-showing-turrent-location-in-mapview/9990668#9990668), które zawiera czyste i jasne wyjaśnienie wymóg i sposób umieszczania znaczników. –
Umieszczę markery w porządku, moim problemem jest to, że nie ma dobrej lokalizacji na początku. Umieściłem ten kod również w mojej metodzie tworzenia, ale mam nadzieję, że prosto do mojego zdania else. ma to związek z moimi uprawnieniami? –