فهرست آموزش برنامه نویسی اندروید

Google Maps در اندروید

۱۳۹۸/۰۸/۲۶ ۴۴

اندورید به ما اجازه می دهد تا Google maps را در اپلیکیشن خود جای دهیم.
می توانید لوکیشن ها و یا مسیر های مختلف و غیره را روی نقشه پیدا کنید. همچنین می توانید طبق انتخاب ها و سلایق خود، نقشه را نیز به دلخواه خود تنظیم کنید و به بیان ساده تر به شخصی سازی (customize) گوگل مپ خود بپردازید.

Google Maps در اندروید – فایل اکتیویتی

گوگل برنامه ی GoogleMap و MapFragment api را برای کامل کردن نقشه روی برنامه اندروید شما ارائه می دهد. برای استفاده از Google map باید یک آبجکت از آن را ایجاد کنید و از لی اوت فایل xml مرجع را بگیرید. ترکیب آن به ترتیب زیر می باشد.

 

<fragment
   android:id="@+id/map"
   android:name="com.google.android.gms.maps.MapFragment"
   android:layout_width="match_parent"
   android:layout_height="match_parent"/>

Google Maps در اندروید – فایل لی اوت

اکنون باید قطعه نقشه را به فایل لی اوت xml اضافه کنید. ترکیب آن مانند زیر می باشد.

 

<!--Permissions-->

<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.WRITE_EXTERNAL_STORAGE" />

<!--Google MAP API key-->

<meta-data
   android:name="com.google.android.maps.v2.API_KEY"
   android:value="AIzaSyDKymeBXNeiFWY5jRUejv6zItpmr2MVyQ0" />

شخصی کردن گوگل مپ (Customizing Google Map):

شما به راحتی می توانید Google map را از طریق ویو پیش فرض آن به دلخواه خود در آورید و آن را طوری که مایلید تغییر دهید.

افزودن نشان گذار (Adding Marker) :

شما می توانید یک نشان گذار (علامت) همراه با یک متن روی نقشه قرار دهید که نشان دهنده ی لوکیشن شما روی نقشه می باشد. این کار از طریق متد ()addMarker انجام می شود.
سینتکس آن مانند زیر می باشد :

final LatLng TutorialsPoint = new LatLng(21 , 57);
Marker TP = googleMap.addMarker(new MarkerOptions()
   .position(TutorialsPoint).title("TutorialsPoint"));

تغییر نوع نقشه:

شما می توانید نوع نقشه را نیز تغییر دهید.
چهار نوع نقشه متفاوت وجود دارد که هر کدام ویو های متفاوتی از نقشه ارائه می دهند. این نقشه ها عبارتند از:

  • Normal
  • Hybrid
  • Satellite
  • terrain

شما می توانید از آن ها مانند زیر استفاده کنید :

googleMap.setMapType(GoogleMap.MAP_TYPE_NORMAL);
googleMap.setMapType(GoogleMap.MAP_TYPE_HYBRID);
googleMap.setMapType(GoogleMap.MAP_TYPE_SATELLITE);
googleMap.setMapType(GoogleMap.MAP_TYPE_TERRAIN);

فعال و غیرفعال کردن زوم:

شما همچنین می توانید حرکات زوم را با فراخوانی متد (setZoomControlsEnabled(boolean فعال یا غیر فعال کنید. سینتکس آن مانند زیر می باشد :

 

googleMap.getUiSettings().setZoomGesturesEnabled(true);

علاوه بر شخصی سازی ، متد های دیگری در کلاس Google map وجود دارد که بیشتر در امر شخصی سازی Google map کمک می کنند. لیست آن ها را می توانید در زیر ببینید :

شماره متد و توضیحات
۱ (addCircle(CircleOptions options

این متد ، به نقشه ، یک دایره اضافه می کند.

۲ (addPolygon(PolygonOptions options

این متد ، به نقشه چند ضلعی اضافه می کند.

۳ (addTileOverlay(TileOverlayOptions options

این متد ، به نقشه tile overlay اضافه می کند.

۴ (animateCamera(CameraUpdate update

این متد طبق آپدیت ، با یک انیمیشن نقشه را حرکت می دهد.

۵ ()clear

این متد ، همه چیز را از نقشه حذف می کند

۶ ()getMyLocation

این متد آخرین موقعیت نمایش داده شده ی یوزر را باز می گرداند.

۷ (moveCamera(CameraUpdate update

این متد ، طبق دستور العمل های تعریف شده در آپدیت ، موقعیت دوربین را تغییر می دهد.

۸ (setTrafficEnabled(boolean enabled

این متد ترافیک لایه را خاموش یا روشن می کند.

۹ ( snapshot(GoogleMap.SnapshotReadyCallback callback

این متد یک عکس فوری از نقشه می گیرد.

۱۰ ()stopAnimation

این متد، انیمیشن در حال پیشرفت دوربین را متوقف می کند.

مثال:

این مثال ، استفاده از کلاس Google map را توضیح می دهد.
این مثال ، یک اپلیکیشن  پایه ایجاد می کند که یک مسیریابی را ، روی نقشه میسر می کند.

برای آزمایش با این مثال می توانید آن را روی دستگاه واقعی یا یک شبیه ساز اجرا کنید.

یک پروژه اکتیویتی google map در زیر نشان داده شده است .

Google Maps

صفحه زیر را باز کرده و url  را کپی کنید و در دکمه API  پیست نمایید . مطابق تصویر زیر :

Google Maps

کد انتخاب شده را کپی کنید و در مرورگر پیست نمایید . مطابق تصویر زیر :

Google Maps

روی گزینه continue کلیک کرده و سپس Create API را انتخاب نمایید . مطابق تصویر :

Google Maps

محتوای فایل activity_main.xml :

 

<fragment xmlns:android="http://schemas.android.com/apk/res/android"
   xmlns:map="http://schemas.android.com/apk/res-auto"
   xmlns:tools="http://schemas.android.com/tools"
   android:id="@+id/map"
   android:name="com.google.android.gms.maps.SupportMapFragment"
   android:layout_width="match_parent"
   android:layout_height="match_parent"
   tools:context="com.example.tutorialspoint7.myapplication.MapsActivity" />

 

محتوای MapActivity.java :

 

package com.example.tutorialspoint7.myapplication;

import android.support.v4.app.FragmentActivity;
import android.os.Bundle;

import com.google.android.gms.maps.CameraUpdateFactory;
import com.google.android.gms.maps.GoogleMap;
import com.google.android.gms.maps.OnMapReadyCallback;
import com.google.android.gms.maps.SupportMapFragment;
import com.google.android.gms.maps.model.LatLng;
import com.google.android.gms.maps.model.MarkerOptions;

public class MapsActivity extends FragmentActivity implements OnMapReadyCallback {

   private GoogleMap mMap;

   @Override
   protected void onCreate(Bundle savedInstanceState) {
      super.onCreate(savedInstanceState);
      setContentView(R.layout.activity_maps);
      // Obtain the SupportMapFragment and get notified when the map is ready to be used.
      SupportMapFragment mapFragment = (SupportMapFragment) getSupportFragmentManager()
         .findFragmentById(R.id.map);
      mapFragment.getMapAsync(this);
   }
   
   /**
      * Manipulates the map once available.
      * This callback is triggered when the map is ready to be used.
      * This is where we can add markers or lines, add listeners or move the camera.
      * In this case, we just add a marker near Sydney, Australia.
      * If Google Play services is not installed on the device. 
      * This method will only be triggered once the user has installed 
         Google Play services and returned to the app.
   */
  
   @Override
   public void onMapReady(GoogleMap googleMap) {
      mMap = googleMap;
      // Add a marker in Sydney and move the camera
      LatLng TutorialsPoint = new LatLng(21, 57);
      mMap.addMarker(new 
         MarkerOptions().position(TutorialsPoint).title("Tutorialspoint.com"));
      mMap.moveCamera(CameraUpdateFactory.newLatLng(TutorialsPoint));
   }
}

 

محتوای فایل AndroidManifest.xml :

 

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.tutorialspoint7.myapplication">

   <!--
      The ACCESS_COARSE/FINE_LOCATION permissions are not required to use
      Google Maps Android API v2, but you must specify either coarse or fine
      location permissions for the 'MyLocation' functionality. 
   -->
    
   <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
   <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
   <uses-permission android:name="android.permission.INTERNET" />
   <application
      android:allowBackup="true"
      android:icon="@mipmap/ic_launcher"
      android:label="@string/app_name"
      android:supportsRtl="true"
      android:theme="@style/AppTheme">

      <!--
         The API key for Google Maps-based APIs is defined as a string resource.
         (See the file "res/values/google_maps_api.xml").
         Note that the API key is linked to the encryption key used to sign the APK.
         You need a different API key for each encryption key, including the release key 
         that is used to sign the APK for publishing.
         You can define the keys for the debug and 
            release targets in src/debug/ and src/release/. 
      -->
      
      <meta-data
         android:name="com.google.android.geo.API_KEY"
         android:value="AIzaSyAXhBdyKxUo_cb-EkSgWJQTdqR0QjLcqes" />

      <activity
         android:name=".MapsActivity"
         android:label="@string/title_activity_maps">
         <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
         </intent-filter>
      </activity>
   </application>

</manifest>

 

خروجی به صورت زیر خواهد بود :

Google Maps

دانشجویار نماد اعتماد به دانشجویار مجوز نشر دیجیتال لوگو شرکت به پرداخت ملت logo-samandehi مجوز سازمان فنی حرفه ای کشور
blackFriday

پیش از شروع جشنواره بلک فرایدی
خودت رو برای یک خرید برق آسا آماده کن!


بلک فرایدی!

برای شرکت در جشنواره بلک فرایدی لطفا ثبت نام کنید.

  از الان برای بلک فرایدی آماده شو - رزرو تخفیف 90% ، برای همه آموزش ها  صفحه جشنواره