Sign Up

Sign Up to our social questions and Answers Engine to ask questions, answer people’s questions, and connect with other people.

Have an account? Sign In

Have an account? Sign In Now

Sign In

Login to our social questions & Answers Engine to ask questions answer people’s questions & connect with other people.

Sign Up Here

Forgot Password?

Don't have account, Sign Up Here

Forgot Password

Lost your password? Please enter your email address. You will receive a link and will create a new password via email.

Have an account? Sign In Now

You must login to ask a question.

Forgot Password?

Need An Account, Sign Up Here

Please briefly explain why you feel this question should be reported.

Please briefly explain why you feel this answer should be reported.

Please briefly explain why you feel this user should be reported.

Sign InSign Up

The Archive Base

The Archive Base Logo The Archive Base Logo

The Archive Base Navigation

  • SEARCH
  • Home
  • About Us
  • Blog
  • Contact Us
Search
Ask A Question

Mobile menu

Close
Ask a Question
  • Home
  • Add group
  • Groups page
  • Feed
  • User Profile
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Buy Points
  • Users
  • Help
  • Buy Theme
  • SEARCH
Home/ Questions/Q 9119129
In Process

The Archive Base Latest Questions

Editorial Team
  • 0
Editorial Team
Asked: June 17, 20262026-06-17T05:19:15+00:00 2026-06-17T05:19:15+00:00

How to get My Location changed event with Google Maps android API v2 ?

  • 0

How to get My Location changed event with Google Maps android API v2?

In v1 you can do the next in order to handle location changed event:

public class MyLocationOverlay extends com.google.android.maps.MyLocationOverlay {

    /**
     * Listener
     */
    public interface Listener {
        void onLocationChanged(android.location.Location location);
    }

    private Listener listener;

    public MyLocationOverlay(Context context, MapView mapView, Listener listener) {
        super(context, mapView);

        this.listener = listener;
    }

    @Override
    public synchronized void onLocationChanged(Location location) {
        super.onLocationChanged(location);

        // fire listener
        if (listener != null)
            listener.onLocationChanged(location);
    }
}
  • 1 1 Answer
  • 0 Views
  • 0 Followers
  • 0
Share
  • Facebook
  • Report

Leave an answer
Cancel reply

You must login to add an answer.

Forgot Password?

Need An Account, Sign Up Here

1 Answer

  • Voted
  • Oldest
  • Recent
  • Random
  1. Editorial Team
    Editorial Team
    2026-06-17T05:19:16+00:00Added an answer on June 17, 2026 at 5:19 am

    UPDATE: Google introduced the new LocationClient and associated LocationListener (the OnMyLocationChangeListener interface is now deprecated).


    You can do this by creating a custom LocationSource for the my-location layer. Below is an example that automatically centers the camera on current location (“my location”), similar to the functionality that was offered by MyLocationOverlay in Google Maps Android API v1.

    So you can simply replace this line of code

    mMap.animateCamera(CameraUpdateFactory.newLatLng(new LatLng(location.getLatitude(), location.getLongitude())));
    

    with whatever functionality you need to be executed when the location changes.

    public class PlaceMapFragment extends SupportMapFragment {
    
        // Note that this may be null if the Google Play services APK is not available.
        private GoogleMap mMap;
    
        protected PlaceActivity activity;
        private FollowMeLocationSource followMeLocationSource;
        private Context mContext;
    
        /* We need the Context in order to get a reference to the Location Manager
         * (when instantiating this fragment from your activity use:
         *  PlaceMapFragment mapFragment = new PlaceMapFragment(this); ) */
        public PlaceMapFragment(Context context) {
            this.mContext = context;
        }
    
        @Override
        public void onActivityCreated(Bundle savedInstanceState) {
            super.onActivityCreated(savedInstanceState);
    
            activity = (PlaceActivity)getActivity();
        }
    
        @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
    
            // creates our custom LocationSource and initializes some of its members
            followMeLocationSource = new FollowMeLocationSource();
    
            /* We can't be guaranteed that the map is available because Google Play services might not be available.
             * (un-comment the following line when using this code in a FragmentActivity / Activity 
             *  to try get a reference to the map here !) */
            //setUpMapIfNeeded();
        }
    
        @Override
        public void onResume() {
            super.onResume();
    
            /* We query for the best Location Provider everytime this fragment is displayed
             * just in case a better provider might have become available since we last displayed it */
            followMeLocationSource.getBestAvailableProvider();
    
            // Get a reference to the map/GoogleMap object
            setUpMapIfNeeded();
    
            /* Enable the my-location layer (this causes our LocationSource to be automatically activated.)
             * While enabled, the my-location layer continuously draws an indication of a user's
             * current location and bearing, and displays UI controls that allow a user to interact
             * with their location (for example, to enable or disable camera tracking of their location and bearing).*/
            mMap.setMyLocationEnabled(true);
        }
    
        @Override
        public void onPause() {
            /* Disable the my-location layer (this causes our LocationSource to be automatically deactivated.) */
            mMap.setMyLocationEnabled(false);
    
            super.onPause();
        }
    
        /**
         * Sets up the map if it is possible to do so (i.e., the Google Play services APK is correctly
         * installed) and the map has not already been instantiated. This will ensure that we only ever
         * manipulate the map once when it {@link #mMap} is not null.
         * <p>
         * If it isn't installed {@link SupportMapFragment} (and {@link com.google.android.gms.maps.MapView
         * MapView}) will show a prompt for the user to install/update the Google Play services APK on their device.
         */
        private void setUpMapIfNeeded() {
            // Do a null check to confirm that we have not already instantiated the map.
            if (mMap == null) {
                mMap = getMap();
                // Check if we were successful in obtaining the map.
                if (mMap != null) {
                    // The Map is verified. It is now safe to manipulate the map:
    
                    // Replace the (default) location source of the my-location layer with our custom LocationSource
                    mMap.setLocationSource(followMeLocationSource);
    
                    // Set default zoom
                    mMap.moveCamera(CameraUpdateFactory.zoomTo(15f));
                }
            }
        }
    
        /* Our custom LocationSource. 
         * We register this class to receive location updates from the Location Manager
         * and for that reason we need to also implement the LocationListener interface. */
        private class FollowMeLocationSource implements LocationSource, LocationListener {
    
            private OnLocationChangedListener mListener;
            private LocationManager locationManager;
            private final Criteria criteria = new Criteria();
            private String bestAvailableProvider;
            /* Updates are restricted to one every 10 seconds, and only when
             * movement of more than 10 meters has been detected.*/
            private final int minTime = 10000;     // minimum time interval between location updates, in milliseconds
            private final int minDistance = 10;    // minimum distance between location updates, in meters
    
            private FollowMeLocationSource() {
                // Get reference to Location Manager
                locationManager = (LocationManager) mContext.getSystemService(Context.LOCATION_SERVICE);
    
                // Specify Location Provider criteria
                criteria.setAccuracy(Criteria.ACCURACY_FINE);
                criteria.setPowerRequirement(Criteria.POWER_LOW);
                criteria.setAltitudeRequired(true);
                criteria.setBearingRequired(true);
                criteria.setSpeedRequired(true);
                criteria.setCostAllowed(true);
            }
    
            private void getBestAvailableProvider() {
                /* The preffered way of specifying the location provider (e.g. GPS, NETWORK) to use 
                 * is to ask the Location Manager for the one that best satisfies our criteria.
                 * By passing the 'true' boolean we ask for the best available (enabled) provider. */
                bestAvailableProvider = locationManager.getBestProvider(criteria, true);
            }
    
            /* Activates this provider. This provider will notify the supplied listener
             * periodically, until you call deactivate().
             * This method is automatically invoked by enabling my-location layer. */
            @Override
            public void activate(OnLocationChangedListener listener) {
                // We need to keep a reference to my-location layer's listener so we can push forward
                // location updates to it when we receive them from Location Manager.
                mListener = listener;
    
                // Request location updates from Location Manager
                if (bestAvailableProvider != null) {
                    locationManager.requestLocationUpdates(bestAvailableProvider, minTime, minDistance, this);
                } else {
                    // (Display a message/dialog) No Location Providers currently available.
                }
            }
    
            /* Deactivates this provider.
             * This method is automatically invoked by disabling my-location layer. */
            @Override
            public void deactivate() {
                // Remove location updates from Location Manager
                locationManager.removeUpdates(this);
    
                mListener = null;
            }
    
            @Override
            public void onLocationChanged(Location location) {
                /* Push location updates to the registered listener..
                 * (this ensures that my-location layer will set the blue dot at the new/received location) */
                if (mListener != null) {
                    mListener.onLocationChanged(location);
                }
    
                /* ..and Animate camera to center on that location !
                 * (the reason for we created this custom Location Source !) */
                mMap.animateCamera(CameraUpdateFactory.newLatLng(new LatLng(location.getLatitude(), location.getLongitude())));
            }
    
            @Override
            public void onStatusChanged(String s, int i, Bundle bundle) {
    
            }
    
            @Override
            public void onProviderEnabled(String s) {
    
            }
    
            @Override
            public void onProviderDisabled(String s) {
    
            }
        }
    
    }
    
    • 0
    • Reply
    • Share
      Share
      • Share on Facebook
      • Share on Twitter
      • Share on LinkedIn
      • Share on WhatsApp
      • Report

Sidebar

Related Questions

Can't get Location header from response at all. Wireshark says that i've got one:
How I can get the location of a program that has been installed on
Can I get a location of mobile devices from j2me programming having no GPS
I use google map api v3 to get coordinate and address from a point,
I want after click on google map and getting Latitude and Longitude get location
I am using google maps api on my MVC3 website everything works perfect on
I am using geolocation to get the address of places on my google maps
I try using ignition-location to get location updates in my Activity. The sample project
How do I get JLabel location instead of top left x/y location of the
I'm trying to get the location of Window's Local AppData folder in a version-agnostic

Explore

  • Home
  • Add group
  • Groups page
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Users
  • Help
  • SEARCH

Footer

© 2021 The Archive Base. All Rights Reserved
With Love by The Archive Base

Insert/edit link

Enter the destination URL

Or link to existing content

    No search term specified. Showing recent items. Search or use up and down arrow keys to select an item.