GoogleMap.getMyLocation(); не может получить текущее местоположение
Я хочу сделать программу для вычисления расстояния между некоторыми местами до моего текущего местоположения, но мой googleMap.getMyLocation(); не работает должным образом.
googleMap = ((MapFragment) getFragmentManager().findFragmentById(R.id.map)).getMap();
googleMap.setMyLocationEnabled(true);
googleMap.getUiSettings().setCompassEnabled(false);
mylocation = googleMap.getMyLocation();
direction = new GMapV2Direction();
LatLng from, to;
from = new LatLng(-7.26071409, 112.80674726);
for(int i=0; i<lat.length; i++){
to = new LatLng(lat[i], lon[i]);
doc = direksi.getDocument(from, to, GMapV2Direction.MODE_DRIVING);
distance[i] = (double)direction.getDistanceValue(doc) / 1000;
}
я сохранил широту и долготу некоторых мест в lat [] и lon [].
LatLng "from" - это mylocation, а "to" - это мои места назначения.
проблема возникает при изменении
from = new LatLng(-7.26071409, 112.80674726);
to
from = new LatLng(mylocation.getLatitude(), mylocation.getLongitude());
Я хочу сделать расчет без открытия googlemaps. карты google появятся, когда я коснусь кнопки карты как всплывающее окно. поэтому вычисление произойдет без открытия googlemap
Пожалуйста, помогите мне
Ответы
Ответ 1
Попробуйте это... Надеюсь, это поможет вам.
LocationManager locationManager = (LocationManager)
getSystemService(Context.LOCATION_SERVICE);
Criteria criteria = new Criteria();
Location location = locationManager.getLastKnownLocation(locationManager
.getBestProvider(criteria, false));
double latitude = location.getLatitude();
double longitude = location.getLongitude();
Ответ 2
Это мой код для вас, я надеюсь, что это поможет вам... отредактируйте его, если вы думаете, что это не с правильным sintaxis...
Эта работа для android 4.x и 5.x и 6.x, я не тестирую это в android 7
//I use this like global var to edit or get informacion about google map
GoogleMap gMap;
@Override
public void onMapReady(GoogleMap googleMap) {
gMap = googleMap;
if (ActivityCompat.checkSelfPermission(Activity_Map.this, android.Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission(Activity_Map.this, android.Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) {
ActivityCompat.requestPermissions(Activity_Map.this,new String[]{android.Manifest.permission.ACCESS_FINE_LOCATION}, 1);
}else{
if(!gMap.isMyLocationEnabled())
gMap.setMyLocationEnabled(true);
LocationManager lm = (LocationManager)getSystemService(Context.LOCATION_SERVICE);
Location myLocation = lm.getLastKnownLocation(LocationManager.GPS_PROVIDER);
if (myLocation == null) {
Criteria criteria = new Criteria();
criteria.setAccuracy(Criteria.ACCURACY_COARSE);
String provider = lm.getBestProvider(criteria, true);
myLocation = lm.getLastKnownLocation(provider);
}
if(myLocation!=null){
LatLng userLocation = new LatLng(myLocation.getLatitude(), myLocation.getLongitude());
gMap.animateCamera(CameraUpdateFactory.newLatLngZoom(userLocation, 14), 1500, null);
}
}
}
Ответ 3
getMyLocation()
=> этот метод устарел. Вам нужно использовать LocationClient
вместо этого.
Вы можете найти информацию о LocationClient
и как узнать текущее местоположение здесь.