الجيولوكيشن والخرائط في C# (.NET): المكتبات والأمثلة والتوصيات

مدرب بايثون أونلاين للمبتدئين

تعلم Python بسهولة دون إرهاق نظري. حل مهام عملية مع التحقق التلقائي واكتب الكود مباشرة في المتصفح.

ابدأ الدورة

الجيولوكيشن والخرائط في C# (.NET): نظرة عامة على المكتبات والأدوات



يعد العمل مع الجيولوكيشن والخرائط مهمة مطلوبة في تطبيقات .NET الحديثة: من تتبع السعاة إلى تصور البيانات على الخريطة. في هذه المقالة، سنستعرض المكتبات والأدوات الرئيسية لـ C# (.NET) التي ستساعدك في تنفيذ وظائف تحديد المواقع الجغرافية وعرض الخرائط.



1. الأدوات المضمنة في .NET: مساحة الأسماء Windows.Devices.Geolocation



لتطبيقات UWP (Universal Windows Platform) في .NET، تتوفر واجهة برمجة تطبيقات مدمجة للحصول على الموقع الحالي للجهاز. الفئة الرئيسية هي Geolocator.



using Windows.Devices.Geolocation;

public async Task<BasicGeoposition> GetCurrentPosition(){ var geolocator = new Geolocator(); geolocator.DesiredAccuracy = PositionAccuracy.High;

Geoposition pos = await geolocator.GetGeopositionAsync(); return pos.Coordinate.Point.Position;}


تقوم هذه الطريقة بإرجاع خط العرض وخط الطول للجهاز. هام: يتطلب العمل إذن المستخدم وتفعيل GPS/الشبكة.



2. مكتبة GeoCoordinate (System.Device.Location)



الفئة GeoCoordinate من System.Device.Location متاحة لتطبيقات .NET Framework الكلاسيكية (Windows Forms, WPF). لا تسمح فقط بالحصول على الإحداثيات، بل أيضًا بحساب المسافة بين نقطتين.



using System.Device.Location;

public double CalculateDistance(double lat1, double lon1, double lat2, double lon2){ var coord1 = new GeoCoordinate(lat1, lon1); var coord2 = new GeoCoordinate(lat2, lon2); return coord1.GetDistanceTo(coord2); // بالأمتار}


بالنسبة لـ .NET Core / .NET 5+، هذه المكتبة غير متاحة - استخدم البدائل الموصوفة أدناه.



3. العمل مع الخرائط: MapControl (WPF/UWP)



في WPF وUWP، يمكنك استخدام العنصر المدمج MapControl من Windows.UI.Xaml.Controls.Maps. يسمح بعرض خرائط Bing Maps (افتراضيًا) أو توصيل بلاطات خارجية.



<!-- ترميز XAML --><Maps:MapControl x:Name="MyMap"                  ZoomLevel="12"                  Center="55.7558, 37.6173" />


لإضافة دبابيس (علامات) استخدم MapIcon:



using Windows.Devices.Geolocation;using Windows.UI.Xaml.Controls.Maps;

public void AddMarker(double latitude, double longitude, string title){ var pin = new MapIcon { Location = new Geopoint(new BasicGeoposition { Latitude = latitude, Longitude = longitude }), Title = title, NormalizedAnchorPoint = new Point(0.5, 1.0) }; MyMap.MapElements.Add(pin);}


4. Google Maps API لـ .NET



للعمل مع Google Maps من C# (.NET Core / .NET 5+)، استخدم مكتبة GoogleMapsApi (NuGet: GoogleMapsApi). توفر واجهة مريحة للترميز الجغرافي، والترميز الجغرافي العكسي، وإنشاء المسارات.



using GoogleMapsApi;using GoogleMapsApi.Entities.Geocoding.Request;using GoogleMapsApi.Entities.Geocoding.Response;

public async Task<GeocodingResponse> GeocodeAddress(string address){ var request = new GeocodingRequest { Address = address, ApiKey = "YOUR_API_KEY" }; var geocodingEngine = new GeocodingEngine(); return await geocodingEngine.GeocodeAsync(request);}


لا تنس الحصول على مفتاح API من Google Cloud Console وتفعيل الفوترة (الحد المجاني - 40,000 طلب/شهر).



5. مكتبة NetTopologySuite للعمل مع الهندسة



إذا كنت بحاجة لتحليل البيانات الجغرافية (المضلعات، الخطوط، النقاط)، استخدم NetTopologySuite (NTS). هذه نسخة من مكتبة JTS لجافا إلى .NET.



using NetTopol                    

توصيات