آموزش به دست آوردن موقعیت فعلی در Google Map

سلام دوستان در این سری از آموزش برنامه نویسی اندروید به آموزش به دست آوردن موقعیت فعلی در Google Map در برنامه نویسی اندروید می پردازیم آموزش های مختلفی در مورد کار کردن با Google Map قرار دادیم امروز در صدد برآمدیم تا آموزش به دست آوردن موقعیت فعلی کاربر را در Google Map آموزش دهیم در ادامه می توانید پیش نمایشی از این آموزش را مشاهده کنید با ما همراه باشید.

در ادامه که این از این آموزش استفاده کردید Gps را حتما روشن کنید تا برنامه کار کند !
می توانید از آموزش های قبلی ما نیز استفاده کنید.

آموزش رسم مسیر و محاسبه فاصله بین دو مکان در Google Maps

آموزش کار با نقشه (Google map) در برنامه نویسی اندروید

زمانی که مثل بالا بروی Google Maps Activity کلیک کنید و آن را ایجاد کنید سه فایل به پروژه شما اضافه می شود که عبارتند از :
google_maps_api.xml  : که در مسیر res/values قرار دارد و باید در آن Api Key خودتان را قرار دهید (آموزش های قبلی برای اطلاعات بیشتر نگاه کنید)
MapsActivity.java : باید کد مربوط به نقشه را در آن بنویسیم یکسری کد به صورت پیشفرض در آن وجود دارد.
activity_maps.xml : که نقشه در آن وجود دارد.
وارد AndroidManifest.xml شده و بررسی کنید دسترسی های زیر وجود دارد یا خیر اگر نبود اضافه کنید

    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="com.google.android.providers.gsf.permission.READ_GSERVICES" />
    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />

تمامی دسترسی های بالا لازم است.

    <meta-data
            android:name="com.google.android.geo.API_KEY"
            android:value="@string/google_maps_key"/>

دقت کنید باید در فایل build.gradle کتاب خانه زیر اضافه شده باشد.

compile ‘com.google.android.gms:play-services:6.5.87’

ممکن است نسخه آن فرق کنید آن را تغییر ندهید .
حالا می خواهییم یکسری تغییرات در فایل های که از قبل وجود داشته اعمال کنیم !
ابتدا وارد activity_maps.xml شده و کدهای زیر را به جای کدهای قبلی قرار دهید.

<?xml version="1.0" encoding="utf-8"?>
      <RelativeLayout
                android:layout_width="match_parent"
                android:layout_height="0dp"
                android:layout_marginBottom="4dp"
                android:layout_weight="1" >
                    <fragment
                        android:id="@+id/map"
                        android:name="com.google.android.gms.maps.MapFragment"
                        android:layout_width="match_parent"
                        android:layout_height="match_parent"
                        />
                    <ImageView
                        android:id="@+id/iv"
                        android:layout_width="match_parent"
                        android:layout_height="match_parent"
                        android:background="@android:color/transparent" />
            </RelativeLayout>

سپس وارد اکتیویتی MapsActivity.java شده  وکدهای زیر را به جای کدهای قبلی قرار دهید.

public static class MapsActivity extends Fragment
            implements
                GooglePlayServicesClient.ConnectionCallbacks,
                GooglePlayServicesClient.OnConnectionFailedListener,
                LocationListener {
        GoogleMap map;
        LatLng latlng;
        private LocationRequest lr;
        private LocationClient lc;
        MapFragment mapFragment;
        ImageView iv;
        private static View view;
        public MapsActivity() {
        }
        @Override
        public View onCreateView(LayoutInflater inflater, ViewGroup container,
                Bundle savedInstanceState) {
            if (view != null) {
                ViewGroup parent = (ViewGroup) view.getParent();
                if (parent != null)
                    parent.removeView(view);
            }
            try {
                view = inflater.inflate(R.layout.activity_maps, container,
                        false);
                mapFragment = ((MapFragment) this.getActivity()
                        .getFragmentManager().findFragmentById(R.id.map));
                iv = (ImageView) view.findViewById(R.id.iv);
                map = mapFragment.getMap();
                map.getUiSettings().setAllGesturesEnabled(false);
                map.getUiSettings().setMyLocationButtonEnabled(false);
                map.setMyLocationEnabled(true);
                map.getUiSettings().setZoomControlsEnabled(false);
                MapsInitializer.initialize(this.getActivity());
            } catch (GooglePlayServicesNotAvailableException e) {
                Toast.makeText(getActivity(), "Google Play Services missing !",
                        Toast.LENGTH_LONG).show();
            } catch (InflateException e) {
                Toast.makeText(getActivity(), "Problems inflating the view !",
                        Toast.LENGTH_LONG).show();
            } catch (NullPointerException e) {
                Toast.makeText(getActivity(), "Google Play Services missing !",
                        Toast.LENGTH_LONG).show();
            }
            return view;
        }
        @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            lr = LocationRequest.create();
            lr.setPriority(LocationRequest.PRIORITY_HIGH_ACCURACY);
            lc = new LocationClient(this.getActivity().getApplicationContext(),
                    this, this);
            lc.connect();
        }
        @Override
        public void onLocationChanged(Location l2) {
            CameraUpdate cameraUpdate = CameraUpdateFactory.newLatLngZoom(
                    new LatLng(l2.getLatitude(), l2.getLongitude()), 15);
            map.animateCamera(cameraUpdate);
        }
        @Override
        public void onConnectionFailed(ConnectionResult arg0) {
        }
        @Override
        public void onConnected(Bundle connectionHint) {
            lc.requestLocationUpdates(lr, this);
        }
        @Override
        public void onDisconnected() {
        }
    }

حالا برنامه را اجرا کنید می بینید که به صورت اتوماتیک به محلی که شما در آن هستید می رود.

مطالعه بیشتر