الجيولوكيشن والخرائط في 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