Zeina Almakdisi نشر 12 فبراير 2023 أرسل تقرير نشر 12 فبراير 2023 مرحبا أعمل على حساب اقصر مسافة باستخدام خدمات google maps api نجحت في إيجاد المسافة بين موقعي والمراكز ما احتاجه هو استخراج المسافة الاقصر distance جزء الشيفرة المسؤول : <script> function callback(response, status) { if (status == 'OK') { var origins = response.originAddresses; var destinations = response.destinationAddresses; for (var i = 0; i < origins.length; i++) { var results = response.rows[i].elements; for (var j = 0; j < results.length; j++) { var element = results[j]; var distance = element.distance.text;/////// مااحتاجه هو استخراج اصغر قيمة var duration = element.duration.text; var from = origins[i]; var to = destinations[j]; } } } }} </script> </head> <body> <div id="container"> <div id="map"></div> <div id="sidebar"> <h3 style="flex-grow: 0">Request</h3> <pre style="flex-grow: 1" id="request"></pre> <h3 style="flex-grow: 0">Response</h3> <pre style="flex-grow: 1" id="response"></pre> </div> </div> الخرج في المتصفح: 1 اقتباس
0 Sam Ahw نشر 12 فبراير 2023 أرسل تقرير نشر 12 فبراير 2023 يمكنك البحث عن أصغر قيمة ضمن مصفوفة elements للوصول إلى المسافة الأقصر باستخدام الدالة reduce كالتالي: elements.reduce(function(prev, curr) { return prev.distance.text < curr.distance.text ? prev : curr; }); أو بشكل مختصر: (prev, curr) => prev.distance.text < curr.distance.text ? prev : curr ولكن قبل ذلك بما أن القيمة هي سلسلة نصية وفيها الواحدة km يجب عليك إجراء التحويل اللازم باستخدام الدالة map مثلاً: const elements = elements.map(x => x.distance.text = x.distance.text.split(" ")[0]); ونظراً للواحدة km، في حال كان الخرج من الممكن أن يحوي واحدات قياس أخرى أصغر منها مثل m، فيمكنك استخدام طرق أخرى لفحص الواحدة والقيام بالتحويل اللازم حسب الشروط (باستخدام if أو switch أو غيرها) أو يمكنك الاعتماد على المدّة الزمنية duration بدلاً من المسافة لتسهيل العمل في حال كان مشروعك يتطلب فقط الطريق الأقرب بدلاً من الأقصر طولاً. هذه فكرة الحل العامة، قد يختلف التطبيق حسب لغات وأطر العمل التي يتم استخدامها في مشروعك كونه لا يوجد تفاصيل إضافية عن المشروع. 1 اقتباس
0 Zeina Almakdisi نشر 12 فبراير 2023 الكاتب أرسل تقرير نشر 12 فبراير 2023 بتاريخ 50 دقائق مضت قال Sam Ahw: يمكنك البحث عن أصغر قيمة ضمن مصفوفة elements للوصول إلى المسافة الأقصر باستخدام الدالة reduce كالتالي: elements.reduce(function(prev, curr) { return prev.distance.text < curr.distance.text ? prev : curr; }); أو بشكل مختصر: (prev, curr) => prev.distance.text < curr.distance.text ? prev : curr ولكن قبل ذلك بما أن القيمة هي سلسلة نصية وفيها الواحدة km يجب عليك إجراء التحويل اللازم باستخدام الدالة map مثلاً: const elements = elements.map(x => x.distance.text = x.distance.text.split(" ")[0]); ونظراً للواحدة km، في حال كان الخرج من الممكن أن يحوي واحدات قياس أخرى أصغر منها مثل m، فيمكنك استخدام طرق أخرى لفحص الواحدة والقيام بالتحويل اللازم حسب الشروط (باستخدام if أو switch أو غيرها) أو يمكنك الاعتماد على المدّة الزمنية duration بدلاً من المسافة لتسهيل العمل في حال كان مشروعك يتطلب فقط الطريق الأقرب بدلاً من الأقصر طولاً. هذه فكرة الحل العامة، قد يختلف التطبيق حسب لغات وأطر العمل التي يتم استخدامها في مشروعك كونه لا يوجد تفاصيل إضافية عن المشروع. شكرا لك لكن حاولت كثيرا ويعيد نفس الخطأ Uncaught ReferenceError: elements is not defined اقتباس
0 Sam Ahw نشر 12 فبراير 2023 أرسل تقرير نشر 12 فبراير 2023 بتاريخ 1 دقيقة مضت قال Zeina Almakdisi: شكرا لك لكن حاولت كثيرا ويعيد نفس الخطأ Uncaught ReferenceError: elements is not defined elements هو جزء من الخرج وليس متغيّر عام، أنا وضعته فقط لسهولة توضيح المثال ولكن يجب عليك الوصول لقيمته الفعلية من خلال الرد response الذي يأتي من API، ومن الصورة المرفقة والشيفرة أصبحت قيمته موجودة لديك ضمن المتغيّر results: var results = response.rows[i].elements; اقتباس
السؤال
Zeina Almakdisi
مرحبا
أعمل على حساب اقصر مسافة باستخدام خدمات google maps api
نجحت في إيجاد المسافة بين موقعي والمراكز
ما احتاجه هو استخراج المسافة الاقصر distance
جزء الشيفرة المسؤول :
الخرج في المتصفح:
3 أجوبة على هذا السؤال
Recommended Posts
انضم إلى النقاش
يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.