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

نحوه اضافه کردن Google Maps SDK

برای استفاده از نقشه باید مطمئن شوید که google play services در sdk شما نصب شده باشد. برای فهمیدن این موضوع به آدرس زیر بروید:

SDK Manager → Extras

سپس چک باکس آن را انتخاب کنید و بر روی دکمه ی نصب بزنید.

سپس باید  Google Play را به  build.gradle اضافه کنید

dependencies { 
  compile fileTree(dir: 'libs', include: ['*.jar']) 
  compile 'com.android.support:appcompat-v7:21.0.3' 
  compile 'com.google.android.gms:playservices:6.5.87' 
}

گوگل به شما اجازه نمی‌دهد که بدون استفاده از api key از نقشه استفاده کنید

برای گرفتن یک کلید ترمینال را باز کنید و تلاش کنید فایل debug.keystore  را پیدا کنید

– Windows (new): C:\Users\USERNAME\.android 
– Windows (old): C:\Documents and Settings\USERNAME\.android 
– Linux: /home/USERNAME/.android/ – 
– Mac: /Users/USERNAME/.android/ (?)

با استفاده از ترمینال و دستور cd وارد پوشه ی آن شوید و سپس کد زیر را وارد کنید

keytool -list -v -keystore debug.keystore
 (it asks for a password, so just press Enter)

حال در ترمینال به دنبال Certificate fingerprint بگردید و در آن SHA-1 برای ما مهم است که یک string با فرمتی مشابه فرمت پایین است

BD:2B:3F:4B:………

حال به Google APIs developer console به آدرس زیر بروید

https://console.developers.google.com/cloud-resource-manager

حال بر روی موارد زیر کلیک کنید

APIs and Auth → Credentials → Create new Key

سپس Android Key را انتخاب کنید

حال SHA1 را که کپی کرده بودید اینجا paste  کنید.

تغییرات Manifest

برای استفاده از نقشه در برنامه باید یک سری تغییرات در manifest  ایجاد کنید

<manifest ...>
 <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
 <uses-permission android:name="android.permission.INTERNET" />
 <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
 <uses-feature android:glEsVersion="0x00020000" android:required="true" />
 <application ...>
 <meta-data android:name="com.google.android.gms.version"
 android:value="@integer/google_play_services_version" />
 <meta-data android:name="com.google.android.maps.v2.API_KEY"
 android:value="your API key" />
 <activity ...> ... </activity>
 </application>
</manifest>

اضافه کردن نقشه گوگل در کد اندروید

برای استفاده از Google Maps API  گوگل یک کلاس فرگمنتی به اسم MapFragment  ایجاد کرده است که میتوانید به وسیله آن در یک activity  نقشه را داشته باشید

<LinearLayout ...
 xmlns:android="http://schemas.android.com/apk/res/android"
 xmlns:map="http://schemas.android.com/apk/res-auto"
 tools:ignore="MissingPrefix">
 <fragment ...
 android:name="com.google.android.gms.maps.MapFragment"
 android:id="@+id/ID" />
 </LinearLayout>

برای آماده شدن نقشه باید کمی صبر کنید

public class Name extends Activity implements OnMapReadyCallback, GoogleMap.OnMapLoadedCallback { 
private GoogleMap map = null;

@Override 
protected void onCreate(Bundle savedInstanceState) {
...
MapFragment mf = (MapFragment) getFragmentManager().findFragmentById(R.id.ID);
mf.getMapAsync(this); // calls onMapReady when loaded

}

@Override
 public void onMapReady(GoogleMap map) { // map is loaded but not laid out yet map.setOnMapLoadedCallback(this); // calls onMapLoaded when layout done
 }

@Override
 public void onMapLoaded() {
 code to run when the map has loaded;
 }
{

مروری بر متد‌های Maps

قرار دادن یک آیتم بر روی نقشه

addCircle, addGroundOverlay, addMarker, addPolygon, addPolyline, addTileOverlay ,clear,Removes all markers, polylines/polygons, overlays

دستکاری دوربین

getCameraPosition, moveCamera, animateCamera, stopAnimation

تنظیمات و ظاهر نقشه

setBuildingsEnabled, setIndoorEnabled, setMapType, setPadding, setTrafficEnabled

گرفتن اسکرین شات از نقشه

Snapshot

واسط‌های رویداد‌ها

setOnCameraChangeListener, setOnMapClickListener, setOnMapLoadedCallback, setOnMapLongClickListener, setOnMarkerClickListener, setOnMarkerDragListener, setOnMyLocationChangeListener

المان های درون نقشه

المان های درون نقشه شامل موارد زیر است که در شکل نیز نمایش داده شده است

  • target location (latitude/longitude)
  • zoom (2.0 – 21.0)
  • bearing (orientation/rotation)
  • tilt (degrees)

latitude: زاویه ی N/S نسبت به استوا

longitude: زاویه ی E/W نسبت به نصف النهار اصلی

قرار دادن تنظیمات نقشه مثل موقعیت دوربین در xml

<fragment ...
 android:name="com.google.android.gms.maps.MapFragment"
 android:id="@+id/ID"
 map:cameraBearing="112.5"
 map:cameraTargetLat="-33.796923"
 map:cameraTargetLng="150.922433"
 map:cameraTilt="30"
 map:cameraZoom="13"
 map:mapType="normal"
 map:uiCompass="false"
 map:uiRotateGestures="true"
 map:uiScrollGestures="false"
 map:uiTiltGestures="true"
 map:uiZoomControls="false"
 map:uiZoomGestures="true"/>

متد های cameraUpdateFactory

برای تنظیم کردن دوربین در جاوا از cameraUpdateFactory استفاده میکنیم. به عنوان نمونه برای نمایش دادن کل نقشه آمریکا، از کد زیر استفاده میکنیم:

LatLngBounds bounds = new LatLngBounds( 
new LatLng(20, -130.0), // SW
new LatLng(55, -70.0)); // NE 
map.moveCamera(CameraUpdateFactory.newLatLngBounds(bounds, 50));

نمایش یک نشانگر بر روی نقشه

برای قراردادن یک نشانگر بر روی نقشه کافیست از متد addMarker  استفاده کنید که در داخل کلاس GoogleMap قرار گرفته است همچنین میتوانید آیکون ، رنگ و .. را در یک نشانگر تغییر دهید.

map.addMarker(new MarkerOptions()
.position(new LatLng(40.801, -96.691)) 
.title("Lincoln, NE") );

برای حذف یک نشانگر از روی نقشه کافیست به مانند مثال زیر عمل کنید

Marker mark = map.addMarker(new MarkerOptions() ...);
mark.remove();

خطوط و مسیر‌ها

برای اضافه کردن مسیر و خطوط بر روی نقشه میتوانیم از متد addPolyline  استفاده کنیم که در آن میتوان مواردی چون رنگ ، عرض خطوط و … را آورد

map.addPolyline(new PolylineOptions() 
.add(new LatLng(40.801, -96.691)) // Lincoln, NE 
.add(new LatLng(34.020, -118.412)) // Los Angeles, CA
.add(new LatLng(40.703, -73.980)) // New York, NY 
);

و برای حذف کردن یک مسیر میتوانید از کد زیر استفاده کنید

Polyline polly = map.addPolyline(...);
polly.remove();

مسیرها به شکل زیر نمایش داده می شوند:

Was this article helpful?
Dislike 0
قبلی: جسچرها و حرکات لمسی در اندروید
بعدی: آموزش مکان یابی کاربر (GPS) در برنامه نویسی اندروید