Google Maps SDK — ما هو، خرائط Google وواجهة API للتطوير

المؤلف: IT Sectr نُشر: 2026-04-30 وقت القراءة: 10 دق

Google Maps SDK — عبارة عن مجموعة أدوات من Google لدمج الخرائط التفاعلية، والترميز الجغرافي، والمسارات، والبحث عن الأماكن في تطبيقات الجوال والويب. يشتمل الـ SDK على Maps SDK لنظامي Android وiOS، وPlaces API للعمل مع البيانات الجغرافية، وDirections API لبناء المسارات. تعالج خدمات خرائط Google أكثر من 100 مليار طلب يومياً، مما يجعل Maps SDK أحد أكثر حلول رسم الخرائط أداءً. وفقاً لبيانات Google Maps Platform Documentation, 2025، يُستخدم الـ SDK في 60% من جميع تطبيقات الجوال التي تعرض الخرائط.

الخلاصة

  • Google Maps SDK — منصة لدمج الخرائط والبيانات الجغرافية والتنقل في التطبيقات
  • Maps SDK — عرض الخرائط التفاعلية مع تخصيص الأنماط والطبقات
  • Places API — البحث عن الأماكن والترميز الجغرافي والحصول على معلومات عن المنشآت
  • Directions API — بناء المسارات لمختلف وسائل النقل
  • الفوترة — الدفع مقابل استخدام الـ API بناءً على عدد الطلبات (2-10$ لكل 1000 طلب)

ما هو Google Maps SDK؟

Google Maps SDK — منصة شاملة للمطورين توفر أدوات للعمل مع البيانات الجغرافية في التطبيقات. تتضمن المنصة عدة واجهات API: Maps SDK (عرض الخرائط)، وRoutes API (المسارات)، وPlaces API (البحث عن الأماكن والبيانات الجغرافية)، وGeocoding API (تحويل العناوين إلى إحداثيات). يتم دمج كل SDK بشكل منفصل وله نموذج فوترة خاص به.

على عكس Apple MapKit، يقدم Google Maps SDK مجموعة بيانات أوسع: معلومات عن 250 مليون مكان، وحركة المرور في الوقت الفعلي، وبانوراما Street View وخرائط Indoor Maps للمباني الداخلية. وفقاً لبيانات Statista (2025)، تستحوذ Google Maps Platform على 75% من سوق SDK لرسم الخرائط في تطبيقات الجوال. الميزة الرئيسية — مفتاح API موحد لجميع خدمات خرائط Google والتكامل عبر المنصات (Android وiOS والويب).

مفتاح API وإعدادات الأمان

مفتاح API — عنصر إلزامي للعمل مع Google Maps SDK. يتم إنشاء المفتاح في Google Cloud Console وربطه بمشروع معين. لنظام Android يلزم إضافة SHA-1 لشهادة التطبيق، ولنظام iOS — معرف الحزمة Bundle Identifier. توصي Google بتقييد استخدام مفتاح API حسب عناوين IP أو أجهزة إحالة HTTP أو حزم التطبيقات لمنع الوصول غير المصرح به.

Maps SDK لنظام Android: التكامل والإمكانيات

Maps SDK لنظام Android — مكتبة تعرض خرائط Google التفاعلية داخل تطبيق Android عبر MapView أو SupportMapFragment. يدعم الـ SDK ما يلي: أنماط خرائط مخصصة، وعلامات بنوافذ معلوماتية، ومضلعات وخطوط متعددة، وطبقات حركة المرور والنقل، بالإضافة إلى أحداث اللمس والإيماءات (التكبير والتدوير والإمالة). تستخدم الخرائط OpenGL للعرض، مما يوفر 60 إطاراً في الثانية على الأجهزة الحديثة.

يبدأ التكامل بإضافة التبعية في build.gradle وإعداد مفتاح API عبر AndroidManifest.xml. يتطلب Google Maps SDK لنظام Android تثبيت Google Play Services على الجهاز. إذا كانت Google Play Services غير متوفرة (على سبيل المثال، على أجهزة Huawei دون خدمات Google)، فلن يتم عرض الخرائط. في مثل هذه الحالات، توصي Google باستخدام حلول بديلة أو WebView مع JavaScript Maps API.

kotlin
// AndroidManifest.xml — بيانات تعريف مفتاح API
// <meta-data android:name="com.google.android.geo.API_KEY"
//     android:value="YOUR_API_KEY"/>

// جزء الخريطة في Activity
class MapActivity : AppCompatActivity(),
    OnMapReadyCallback {

    private lateinit var map: GoogleMap

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_map)
        val mapFragment = supportFragmentManager
            .findFragmentById(R.id.map) as SupportMapFragment
        mapFragment.getMapAsync(this)
    }

    override fun onMapReady(googleMap: GoogleMap) {
        map = googleMap
        val sydney = LatLng(-33.8688, 151.2093)
        map.addMarker(MarkerOptions().position(sydney)
            .title("Sydney"))
        map.moveCamera(CameraUpdateFactory
            .newLatLngZoom(sydney, 12f))
    }
}

يدعم Google Maps SDK على Android خرائط Indoor Maps — عرض مخططات المباني (المطارات ومراكز التسوق). للتفعيل يكفي تعيين map.isIndoorEnabled = true. تعرض طبقة حركة المرور (Traffic Layer) ازدحام الطرق في الوقت الفعلي — يتم تحديث البيانات كل 2-5 دقائق. تعرض طبقة النقل (Transit Layer) مسارات وسائل النقل العامة في المدن المدعومة.

Maps SDK لنظام iOS: الإعداد والاستخدام

يوفر Maps SDK لنظام iOS نفس الإمكانيات التي توفرها نسخة Android، لكنه مُكيَّف لمنصة Apple. يتم التكامل عبر Swift Package Manager أو CocoaPods. يستخدم Maps SDK لنظام iOS خوادم Google لعرض الخرائط، لكنه يمكن أن يعمل جنباً إلى جنب مع Apple MapKit للتنقل الأصلي. يدعم الـ SDK نظام iOS 15 وما فوق، بالإضافة إلى SwiftUI عبر UIViewRepresentable.

خصوصية نسخة iOS — الإعداد الإلزامي لملف Info.plist مع تحديد مفتاح API وإضافة مخطط URL لخرائط Google. على عكس Android، لا يتطلب iOS SDK خدمات Google Play Services، لكنه يتطلب تطبيق خرائط Google مثبتاً لبعض الوظائف (مثل فتح الخرائط في التنقل). بالنسبة للمشاريع متعددة المنصات، توصي Google بمفتاح API موحد للمشروع، مفعّل لكلتا المنصتين.

swift
import GoogleMaps

class MapViewController: UIViewController {

    override func viewDidLoad() {
        super.viewDidLoad()
        let camera = GMSCameraPosition.camera(
            withLatitude: 55.7558,
            longitude: 37.6173,
            zoom: 10
        )
        let mapView = GMSMapView.map(
            withFrame: view.frame,
            camera: camera
        )
        self.view = mapView

        let marker = GMSMarker()
        marker.position = CLLocationCoordinate2D(
            latitude: 55.7558,
            longitude: 37.6173
        )
        marker.title = "Moscow"
        marker.map = mapView
    }
}

على iOS، يدعم Google Maps SDK الأنماط المخصصة عبر ملف JSON بتنسيق Google Maps Styling. تتيح الأنماط تغيير ألوان الطرق والمياه والحدائق والمباني بما يتوافق مع تصميم التطبيق. كما تُدعم طبقة الخرائط الحرارية Heatmap Layer لتصور كثافة البيانات، وKML وGeoJSON لاستيراد البيانات الجغرافية من مصادر خارجية.

Places API: البحث عن الأماكن والترميز الجغرافي

Places API — خدمة من Google Maps Platform للحصول على معلومات عن الأماكن الجغرافية: العناوين والإحداثيات والتقييم وساعات العمل والصور والمراجعات. يعمل Places API في وضعين: Place Search (البحث عن الأماكن حسب النص أو نصف القطر) وPlace Details (الحصول على معلومات تفصيلية عن مكان محدد عبر Place ID). يتوفر الـ SDK لنظامي Android وiOS وكرسالة REST API.

يتيح Places SDK لنظامي Android وiOS تضمين الإكمال التلقائي للعناوين (Place Autocomplete) مباشرةً في حقول النص الخاصة بالتطبيق. هذه وظيفة رئيسية لتطبيقات التوصيل وسيارات الأجرة والخدمات اللوجستية — يبدأ المستخدم بإدخال العنوان، ويقترح الـ SDK خيارات من قاعدة بيانات خرائط Google. يقلل Place Autocomplete عدد أخطاء إدخال العنوان بنسبة 80% مقارنةً بالإدخال اليدوي. فوترة Places API: 2.83$ لكل 1000 طلب Place Details، وPlace Search — 4.71$ لكل 1000.

kotlin
// البحث عن مكان حسب النص على Android
val placesClient = Places.createClient(context)
val request = FindCurrentPlaceRequest.builder(
    listOf(Place.Field.NAME, Place.Field.ADDRESS)
).build()

placesClient.findCurrentPlace(request)
    .addOnSuccessListener { response ->
        for (placeLikelihood in response.placeLikelihoods) {
            Log.d("الأماكن", "${placeLikelihood.place.name} - ${placeLikelihood.likelihood}")
        }
    }

Place Autocomplete: الإكمال التلقائي للعناوين

Geocoding API — الترميز الجغرافي العكسي (الإحداثيات → العنوان) والمباشر (العنوان → الإحداثيات). يُستخدم لتحويل العنوان الذي أدخله المستخدم إلى إحداثيات لعرضه على الخريطة. يتم تسعير Geocoding API بشكل منفصل: 4.71$ لكل 1000 طلب. تقدم Google 200 طلب مجاني يومياً لكل حساب لأغراض الاختبار.

Directions API: بناء المسارات

Directions API — خدمة لحساب المسارات بين نقطتين أو أكثر مع مراعاة وسيلة النقل (السيارة، المشي، الدراجة، وسائل النقل العامة). يعيد الـ API عدة مسارات بديلة مع تحديد المسافة ووقت الرحلة وتعليمات خطوة بخطوة وخط متعدد لرسم المسار على الخريطة. يتوفر Directions API كـ REST API وعبر SDK الخاصة بالعملاء.

وظائف موسعة — Routes API (واجهة API جديدة موصى بها من Google منذ 2024). يقدم Routes API توجيه محسّناً مع مراعاة حركة المرور في الوقت الفعلي والبصمة البيئية (eco-friendly routing) والتحليل التنبؤي لوقت الوصول. وفقاً لبيانات Google، يحسب Routes API وقت الرحلة في الظروف الحضرية بدقة أكبر بنسبة 20% مقارنةً بـ Directions API التقليدي. تسعير Routes API: 5.00$ لكل 1000 طلب.

kotlin
// طلب مسار عبر Routes API
val client = OkHttpClient()
val requestBody = """
    {
        "origin": {"location": {"latLng": {"latitude": 55.75, "longitude": 37.61}}},
        "destination": {"location": {"latLng": {"latitude": 55.79, "longitude": 37.79}}},
        "travelMode": "DRIVE",
        "routingPreference": "TRAFFIC_AWARE"
    }
""".trimIndent()

val request = Request.Builder()
    .url("https://routes.googleapis.com/directions/v2:computeRoutes")
    .header("X-Goog-Api-Key", apiKey)
    .header("Content-Type", "application/json")
    .post(requestBody.toRequestBody())
    .build()

client.newCall(request).enqueue(object : Callback {
    override fun onResponse(call: Call, response: Response) {
        Log.d("المسار", response.body?.string() ?: "")
    }
})

يدعم Directions API حتى 25 نقطة وسيطة (waypoints) لمسار واحد. يمكن تحديد النقاط الوسيطة كإحداثيات أو كـ Place ID. لتحسين ترتيب النقاط (traveling salesman problem) استخدم المعامل optimize:true. التسعير: Directions API — 4.71$ لكل 1000 طلب (حتى 10 نقاط)، وكل نقطة إضافية تضيف 50% إلى تكلفة الطلب.

تخصيص الخرائط: الأنماط والعلامات والنوافذ المعلوماتية

يوفر Google Maps SDK إمكانيات تخصيص واسعة: تغيير نظام ألوان الخريطة عبر أنماط JSON، وإضافة علامات مخصصة (بما في ذلك المتحركة)، ونوافذ معلوماتية (InfoWindow) بمحتوى حر، وطبقات رسومية (GroundOverlay وCircle وPolygon). يتيح التخصيص تكييف الخريطة مع هوية التطبيق وتحسين تجربة المستخدم.

يتم تنفيذ تنسيق الخرائط عبر Google Maps Styling Wizard أو ملف JSON بتنسيق Map Style. يمكن تغيير ألوان الطرق (featureType: road) والمياه (water) والحدائق (poi.park) والمباني (building) وعناصر أخرى. للخرائط في السمة الداكنة للتطبيق، استخدم النمط الليلي مع خلفية داكنة وألوان هادئة. تدعم خرائط Google ما يصل إلى 100 قاعدة تنسيق في ملف JSON واحد.

عنصر التخصيصالطريقة/الفئةالوصف
العلاماتMarkerOptions.icon(BitmapDescriptor)أيقونة مخصصة للعلامة من الموارد أو URL
الخطوط المتعددةPolylineOptions.color(width)خطوط لعرض المسارات بلون مخصص
المضلعاتPolygonOptions.fillColor(strokeColor)تعبئة المنطقة مع شفافية وحدود
InfoWindowGoogleMap.setInfoWindowAdapterمحتوى مخصص للنافذة المعلوماتية (أي View)
GroundOverlayGroundOverlayOptions.image(BitmapDescriptor)صورة متراكبة على منطقة الخريطة

Clustering: تجميع العلامات للأداء

Clustering — دمج العلامات في مجموعات عند وجود عدد كبير من النقاط على الخريطة. يتضمن Google Maps SDK لنظامي Android وiOS أداة تجميع مدمجة (com.google.maps.android:android-maps-utils). يمنع Clustering امتلاء الخريطة بالعلامات عند مستويات التكبير الأقل من حد معين. عند التكبير، تنقسم المجموعة تلقائياً إلى علامات منفصلة. وفقاً لبيانات Google، يحسّن التجميع أداء الخريطة بنسبة 40% مع أكثر من 1000 علامة.

مثال على الكود: خريطة مع علامات بلغة Kotlin

مثال كامل لعرض خريطة مع علامة مخصصة وخط متعدد للمسار ونافذة معلوماتية. يعرض التطبيق خريطة موسكو مع نقطة اهتمام ومسار إليها من وسط المدينة. يوضح الكود الإمكانيات الرئيسية لـ Google Maps SDK: إضافة علامة، ورسم خط متعدد، وتحريك الكاميرا، ومعالجة النقرات.

kotlin
class MapDemoActivity : AppCompatActivity(), OnMapReadyCallback {

    override fun onMapReady(map: GoogleMap) {
        val kremlin = LatLng(55.7513, 37.6189)
        val gorkyPark = LatLng(55.7311, 37.6116)

        map.addMarker(MarkerOptions()
            .position(kremlin)
            .title("الكرملين")
            .icon(BitmapDescriptorFactory.defaultMarker(
                BitmapDescriptorFactory.HUE_RED)))

        map.addPolyline(PolylineOptions()
            .add(kremlin, gorkyPark)
            .width(5f)
            .color(Color.parseColor("#2196F3")))

        map.moveCamera(CameraUpdateFactory
            .newLatLngZoom(kremlin, 13f))

        map.setOnInfoWindowClickListener { marker ->
            Toast.makeText(this,
                "${marker.title} تم النقر عليه",
                Toast.LENGTH_SHORT).show()
        }
    }
}

توصيات الأداء: استخدم التحميل غير المتزامن للعلامات عبر ClusterManager عندما يتجاوز عدد النقاط 200، وحدد عدد الخطوط المتعددة الظاهرة (توصي Google بما لا يزيد عن 100 في وقت واحد)، واستخدم Lite Mode للخرائط التي لا تتطلب وظائف كاملة (التمرير دون تغيير التكبير). يقلل Lite Mode استهلاك الذاكرة بنسبة 50% ويسرّع تحميل الخريطة مرتين.

التسعير والحدود في Google Maps Platform

تستخدم Google Maps Platform نموذج الدفع Pay-as-you-go مع حد مجاني شهري قدره 200$ من الرصيد. يتم تسعير كل API على حدة: Maps SDK — 2.83$ لكل 1000 تحميل خريطة، وPlaces API — 4.71$ لكل 1000 طلب، وDirections API — 4.71$ لكل 1000 مسار. Routes API (الموصى به) — 5.00$ لكل 1000 طلب. يغطي الحد المجاني البالغ 200$ عادةً ما يصل إلى 70 000 تحميل خريطة شهرياً.

للمشاريع ذات الأحمال العالية، تقدم Google خصومات عندما يتجاوز الحجم 500 000 طلب شهرياً. لا يتم تسعير Google Maps SDK لعرض الخريطة الأساسية دون تفاعل — يُفرض الدفع فقط مقابل التحميل (map load). في كل مرة يفتح فيها المستخدم شاشة بها خريطة، يُحتسب ذلك كتحميل واحد. التحسين: تخزين بلاطات الخريطة مؤقتاً يقلل عدد التحميلات عند الفتح المتكرر.

الحدود: 300 طلب في الدقيقة لـ Places API (يمكن زيادتها إلى 3000 عبر الحصة في Cloud Console). لـ Directions API — 100 طلب في الدقيقة. يؤدي تجاوز الحد إلى إرجاع خطأ OVER_QUERY_LIMIT. توصي Google باستخدام التأخير الأسي (exponential backoff) للطلبات المتكررة. مراقبة الاستخدام متاحة في Google Cloud Console مع تأخير يصل إلى 5 دقائق.

الأسئلة الشائعة

كم تكلفة استخدام Google Maps SDK في تطبيق الجوال؟

Google Maps SDK يتم تسعيره وفق نموذج pay-as-you-go: 2.83$ لكل 1000 تحميل خريطة. كل شهر تقدم Google 200$ من الرصيد المجاني الذي يغطي حتى 70 000 تحميل. يتم تسعير Places API وDirections API بشكل منفصل. للمشاريع الصغيرة التي يصل جمهورها إلى 10 000 مستخدم، تتراوح التكاليف عادةً بين 10-50$ شهرياً.

هل يمكن استخدام Google Maps SDK دون إنترنت؟

نعم، يدعم Google Maps SDK الخرائط دون اتصال عبر تخزين البلاطات مؤقتاً. يخزّن الـ SDK تلقائياً حتى 1000 بلاطة (ما يقارب منطقة 10x10 كم). للدعم الكامل دون اتصال، استخدم Google Maps Offline API لنظام Android، الذي يتيح تنزيل خريطة منطقة بأكملها. لا تدعم الخرائط دون اتصال حركة المرور والمسارات وPlaces API.

بماذا يختلف Google Maps SDK عن MapKit من Apple؟

يقدم Google Maps SDK مجموعة بيانات أوسع: 250 مليون مكان، وحركة مرور في الوقت الفعلي، وStreet View، وIndoor Maps. Apple MapKit مجاني، لكنه يحتوي على بيانات أقل خارج الولايات المتحدة وأوروبا. يتطلب Google SDK مفتاح API ودفعاً، بينما Apple MapKit — لا. للمشاريع متعددة المنصات، يفضَّل Google Maps SDK لواجهة API موحدة على كلتا المنصتين.

كيف أحصل على مفتاح API مجاني لخرائط Google؟

يتم إنشاء مفتاح API في Google Cloud Console عبر قسم APIs & Services → Credentials. للتفعيل، يلزم ربط المفتاح بحساب دفع، لكن Google تقدم 200$ من الرصيد المجاني شهرياً. يمكن تقييد المفتاح حسب IP أو HTTP-المرجِع أو حزمة Android/معرّف iOS Bundle ID. للاختبار، لا يلزم إدخال بيانات بطاقة مصرفية.

هل يدعم Google Maps SDK تجميع العلامات؟

نعم، يدعم Google Maps SDK التجميع عبر المكتبة android-maps-utils (Android) وGoogle-Maps-iOS-Utils (iOS). يدمج ClusterManager تلقائياً العلامات القريبة في مجموعة مع مؤشر رقمي. عند التكبير، تنقسم المجموعة إلى علامات منفصلة. التجميع إلزامي عند وجود أكثر من 200 علامة للحفاظ على أداء الخريطة.

الملخص

  • Google Maps SDK — منصة لدمج الخرائط والبيانات الجغرافية والتنقل في تطبيقات الجوال
  • Maps SDK لنظامي Android وiOS يعرض خرائط تفاعلية مع دعم الأنماط والعلامات والطبقات
  • Places API — البحث عن الأماكن والإكمال التلقائي للعناوين والترميز الجغرافي للتطبيقات ذات البيانات الجغرافية
  • Directions API / Routes API — بناء المسارات مع مراعاة حركة المرور وحتى 25 نقطة وسيطة
  • التخصيص يتضمن أنماط JSON وعلامات مخصصة وInfoWindow وتجميعاً وGroundOverlay
  • التسعير — pay-as-you-go بدءاً من 2.83$ لكل 1000 تحميل مع حد مجاني 200$ شهرياً
  • مفتاح API إلزامي، ويُربط بالمشروع في Google Cloud Console ويُقيَّد حسب المنصة

سنقوم بتطوير تطبيق جوال جاهز

تقدم IT Sectr تطبيقات iOS وAndroid للشركات الناشئة والشركات منذ عام 2017. سوف نقدم لك النصح ونقترح أفضل حل.

مناقشة المشروع

اقرأ أيضًا