اذهب إلى المحتوى
  • 0

رسم التتبع على الخريطة GPX Trackers في React.JS

Ali Shouaa

السؤال

السلام عليكم ، كيف استطيع أن أرفق ملف gpx داخل نشروع رياكت ، بمعنى أني اريد ان أُرسله من قاعدة البيانات بال node js و عرضه في الرياكت كما في الصورة مثلاً و شكرا 

download (1).jpeg

تم التعديل في بواسطة Wael Aljamal
توضيح السؤال
رابط هذا التعليق
شارك على الشبكات الإجتماعية

Recommended Posts

  • 0

تستخدم ملفات GPX في عمليات تتبع الأنشطة ووضعها على الخريطة، ويتم تمثيلها على شكل XML ويمكن رسم هذه البيانات في المتصفح عن طريق استخدام مكتبة Leaflet.

سيكون على شكل Track segment فيه Track Points

<trkseg>
  <trkpt lat="47.644548" lon="-122.326897">
..
  </trkpt>
  <trkpt lat="47.644548" lon="-122.326897">
...
  </trkpt>
  <trkpt lat="47.644548" lon="-122.326897">
..
  </trkpt>
</trkseg>

بعد عمل parse للملف عن طريق gpxparser نستخلص منه مصفوفة إحداثيات points ويمكن المرور عليهم بحلقة و نضعهم ضمن Polyline لرسم الخط.

تضمين gpxparser يتم عن طريق:

npm install --save gpxparser

والتضمين في المكون:

let gpxParser = require('gpxparser');
أو
<script src="./js/GPXParser.js"></script>

 

import 'leaflet/dist/leaflet.css'
import React from 'react'
import { MapContainer, Polyline, TileLayer } from 'react-leaflet'

import 'gpxParser' from 'gpxparser';



const GpxMap = () => {

// تعريف غرض للتعامل مع الملف
const gpxData = new gpxParser()

// نمرر المسار لللمف
gpxData.parse(OUR_GPX_CONTENT) 


// جلب الإحداثيات كمصفوفة نقاط
const positions = gpxData.tracks[0].points.map(p => [p.lat, p.lon] 

return (
// مكون الخريطة
	<MapContainer
			// تحديد المركز كأول نقطة
	        center={positions[0]}
	        zoom={9}
	        scrollWheelZoom={false}
	      >
      // صورة الخرطية
      // X Y Z إحداثيات الموقع المطلوب
	        <TileLayer url="https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png" />
      // رسم ال Tracks
            <Polyline
	            pathOptions={{ fillColor: 'red', color: 'blue' }}
	            positions={positions}
            />
	</MapContainer>

	)
}

لمعلومات أكثر عن TileLayer

رابط هذا التعليق
شارك على الشبكات الإجتماعية

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...