2015-10-31 7 views
1

Я беру свое текущее местоположение для того, чтобы нанести маркер на карту, работая правильно, но какое-то время он не работает должным образом, я не знаю, почему помочь мне узнать свою ошибку в этом коде. Это мой код для определения текущего местоположения и размещения маркера на карте.Получить текущее местоположение на Карте Google не работает должным образом?

Это мой ява файл MapActivity.java

try { 
     if (googleMap == null) { 
      googleMap = ((MapFragment) getActivity().getFragmentManager() 
        .findFragmentById(R.id.map)).getMap(); 
      googleMap.getUiSettings().setZoomControlsEnabled(false); 
     } 
     GoogleMapOptions options = new GoogleMapOptions(); 
     options.mapType(GoogleMap.MAP_TYPE_NORMAL).compassEnabled(false) 
       .rotateGesturesEnabled(false).tiltGesturesEnabled(false); 

     // this is for get current location 
     LocationManager locationManager = (LocationManager) getActivity() 
       .getSystemService(Context.LOCATION_SERVICE); 
     Criteria criteria = new Criteria(); 
     Location location = locationManager 
       .getLastKnownLocation(locationManager.getBestProvider(
         criteria, true)); 

     if (location != null) { 
      currentLatLng = (new LatLng(location.getLatitude(), 
        location.getLongitude())); 

      googleMap.animateCamera(CameraUpdateFactory.newLatLngZoom(
        new LatLng(location.getLatitude(), location 
          .getLongitude()), 13)); 

      Marker marker = googleMap.addMarker(new MarkerOptions() 
        .position(currentLatLng)); 

      CameraPosition cameraPosition = new CameraPosition.Builder() 
        .target(currentLatLng).zoom(12) 
        .bearing(90).tilt(40).build(); 

      googleMap.animateCamera(CameraUpdateFactory 
        .newCameraPosition(cameraPosition)); 

      CircleOptions circleOptions = new CircleOptions() 
        .center(currentLatLng).radius(200) 
        .fillColor(Color.TRANSPARENT) 
        .strokeColor(0x10000000).strokeWidth(5); 

      mCircle = googleMap.addCircle(circleOptions); 
     } 

    } catch (Exception e) { 
     e.printStackTrace(); 
    } 
+0

Это не совсем понятно, где у вас возникли проблемы. Однако использование 'getLastKnownLocation()' не очень надежное. Лучше явным образом запросить обновление местоположения, когда вам это нужно, взгляните на код в этом ответе, который использует FusedLocationProviderApi: http://stackoverflow.com/a/30255219/4409409 –

+0

oky thnax позволяет мне видеть, где я делаю ошибку –

ответ

0

Вы пробовали следующую строку кода?

googleMap.setMyLocationEnabled(true); 
1

После вызова animateCamera(), вам нужно вызвать setMyLocationEnabled (истина) например

googleMap.animateCamera(CameraUpdateFactory.newLatLngZoom(
        new LatLng(location.getLatitude(), location 
          .getLongitude()), 13)); 
    googleMap.setMyLocationEnabled(true); 
Смежные вопросы