كيف حاولت إصلاح خريطة البحث عن السائقين. الجزء 3 (النهائي)

لذلك ، هذا هو الجزء الثالث من محاولتي لإعادة التفكير في بحث الخريطة المعتاد. الجزء الأول موجود هنا ، والثاني هنا - إنهما أكثر تقنية ، لكن يمكنك الركض في عينيك من أجل فهم أفضل. باختصار ، يبدو الأمر كالتالي: لقد سئمت من التجول في الخرائط أثناء القيادة ، محاولًا العثور على أقرب محطة وقود بين الرموز والإعلانات الصغيرة. بدلاً من ذلك ، أود فقط الذهاب إلى النظر في شاشة التطبيق. حتى يتسنى لها فرز أقرب الأماكن حسب وقت القيادة ، فإنها ستظهر لهم قائمة ، واشرح أي منهم في الطريق وما هي حركة المرور بالنسبة لهم. هذه الفكرة.



في الواقع ، بحلول الإصدار 3.0 من التطبيق ، كان من الممكن أخيرًا تنفيذ جميع الوظائف الأساسية التي أردت. بعد آخر مقال في هذه السلسلة ، قام عدد من الأشخاص بتنزيله ، وحتى كتبوا ملاحظات - شكرًا ، لقد استمعت للجميع. عملت بشكل مكثف على الإصدار الجديد من الشهر لمدة شهرين ، لا يمكنني سرد ​​جميع التغييرات الطفيفة - في الواقع هذا تطبيق جديد بنسبة 80 ٪. مع واجهة محسنة جذريًا ، أسرع مرتين وأكثر استقرارًا. مرة أخرى ، أدعو المتعاطفين للتقييم والتوبيخ. وتحت قطع النقاط الفنية مرة أخرى.

فيما يلي الروابط إلى iPhone و Android

الاختناقات المرورية


كانت إحدى الشكاوى الرئيسية المتعلقة بالإصدار السابق من التطبيق هي الحساب غير الصحيح للوقت - لقد قمت بتطبيقه بمفردي من خلال جهاز التوجيه المفتوح المصدر ، واعتبر أنه الوقت الصافي للطريق. خلال فترات الحد الأدنى لحركة المرور (على سبيل المثال ، في الليل) ، تزامنت الأرقام مع حقيقة أنها أصدرت نفس بطاقات Google ، ولكن في معظم الحالات كان التقدير متفائلاً للغاية على الأقل. هذا استواء معنى التطبيق نفسه ، وكان من الضروري التوصل إلى شيء.

هناك طريقتان لحل هذه المشكلة: انتقل إلى api لجهة خارجية أو حاول ضخ أوزان حركة المرور من مكان ما والاستيراد إلى نفسك. لا أريد حقًا الاعتماد على أي شخص ، لذلك قضيت بعض الوقت في البحث عن حل ثانٍ. كانت النتائج مخيبة للآمال: لم أجد أبدًا قاعدة بيانات لأوزان حركة المرور بتغطية عالمية ستكون متوافقة مع خريطة الشارع المفتوح. هناك بعض القواعد المفتوحة لأجزاء من أوروبا وأمريكا ، والتي ، من الناحية النظرية ، يمكن حياكتها بواسطة OSM من خلال القفز مع الدف - ولكن في النهاية ، قررت ، عند التفكير ، عدم التورط. بالطبع ، جذبت الفرصة لاستضافة التنقل مع حركة المرور ، لكنها أخافت من التغطية غير المكتملة ، وصعوبات التكامل والأخطاء وحقيقة أن حركة المرور تم تخزينها مؤقتاً ، وليس في الوقت الحقيقي. باختصار ، تقضي مرة أخرى الكثير من الوقت واحصل على القليل في النهاية.

مع إدراك أنه في عصرنا دون وجود عم كبير في أي مكان ، بدأت أبحث عن عم مناسب ورخيص. بعد أن تعثرت ، اخترت خدمات HERE - هذه بطاقات نوكيا سابقة ، ثم أخذتها Microsoft إلي ، وتركتها كوحدة منفصلة. كما أفهمها ، فإنهم يعملون الآن بشكل رئيسي مع عملاء من الشركات (على سبيل المثال ، في مجال الخدمات اللوجستية) ولديهم واجهة برمجة تطبيقات معقولة ونظيفة. والأهم من ذلك ، لديهم حركة مرور عالمية في الوقت الحقيقي وحصص سخية إلى حد ما. خيار غير واضح ، لكنني قررت تجربته.

انتهى التكامل أن تكون بسيطة جدا. لعبت دورًا مهمًا هنا من خلال المرونة العامة في الهندسة المعمارية ، والتي ألهمتها. إذا كنت ترغب في ذلك ، فمن السهل الآن دمج ما لا يقل عن Google ، على الأقل اختناقات مرورية في Yandex. أدليت به هنا حركة المرور من انقطاع العودة إلى الملاحة القديم الخاص بي. أخيرًا ، بمقارنة القيم بدون حركة مرور (منجم) ومع حركة المرور ، يمكنك استنباط تقدير عام - طريق فارغ ، وحركة مرور خفيفة ، ومتوسط ​​وما إلى ذلك.

خرائط - قائمة


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

ما يجب القيام به ، كان واضحًا - التخلص من الصور المصغرة للبطاقات إلى الجحيم. لقد ناضلت مع نفسي لفترة طويلة (كل ما فعلته لفترة طويلة) ، لكن في النهاية اتخذت قرارًا قوي الإرادة ، وعمومًا ، فعلت الشيء الصحيح. عندما غادرت الصور الضخمة التي لم يتم تحميلها غالبًا ، أصبحت أكثر هدوءًا وتم تحرير مساحة كبيرة على الشاشة. حتى مع ملء البيانات الجديدة وزيادة العلامات ، تمكنت من الضغط على الشاشة ضعف عدد النتائج كما كان من قبل.



خرائط - الوضع الجديد


لكن مع البطاقة المشتركة ، تصرفت بشكل مختلف. لا أحد (بما في ذلك أنا) يفهم السبب ، في الواقع ، هو مطلوب. كان عصامي ، أخرق ، تم تحميله إلى الأبد وبشكل عام تم إنشاؤه أصلاً للتصحيح. ومع ذلك ، فإن الصورة المرئية للإيزوكرون لسبب ما استمرت في تسخين روحي ، ونتيجة لذلك ، ظلت في احتلال مكان في الواجهة. بعد ذلك قررت: دعنا نحاول جعل وضع عرض بديل كامل للخروج من هذه الصورة التي لا معنى لها. إذا كان شخص ما لا يحب القائمة ويقرأ الخريطة بسهولة - لم لا؟ علاوة على ذلك ، لا يزال لدي بعض الأفكار التي لا يمكن العثور عليها في أي مكان آخر.

على مضض ، رميت صورتي (كان الخادم يئن من الحمل ممتنًا لهذا). وبدلاً من ذلك ، قمت ببناء خريطة كاملة من خلال البرنامج المساعد flutter_map - أخذت البلاط الخلفية من Mapbox - وبدأت تظهر عليها موقفي ونقاط النتائج حولها. ظهرت الحاجة إلى تجميع هذه النقاط على الفور تقريبًا ، وسرعان ما رسمت رمز التجميع القائم على المسافة. انها بدائية للغاية ، ولكنها تغطي 90 ٪ من الحالات. تحت كل هذا ، زرعت مرة أخرى وصمة عار بلدي الخضراء من isochrone. أخيرًا ، أصبحت أسطورة الخريطة تفاعلية أيضًا: النقر فوق عدد النتائج التي تركز على الخريطة ، ثم النقر فوق الوقت - على isochron. مريح جدا.



كانت إحدى الأفكار التي شعرت فيها بالقيمة ، لكن لم أستطع صياغتها بأي شكل من الأشكال ، عرض المسار الحالي وموجه حركة السيارة. حاولت وضعه في بطاقات الطريق بطرق مختلفة ، لكن لم يظهر في أي مكان في مكانه. وأخيراً ، يائسًا تقريبًا ، أدركت: وضع الخريطة الجديد مثالي لهذه الشريحة. لأنه في وضع القائمة ، أكتب مباشرة مع النص ، على طول الطريق في مكان ما أو لا - لكن هذا على الخريطة غير مفهوم دائمًا. حتى في Google أو Apple ، تلاحظ وجود قطاع متناوب باستمرار من البوصلة ولم تفهم لفترة طويلة الاتجاه الذي تسير فيه.

مستوحاة ، جلست للعمل. اضطررت إلى إعادة تشكيل مجموعة من التعليمات البرمجية على طول الطريق ، ولكن بعد يومين كان المنطق جاهزًا. قررت عدم تحديث الموضع كل 200 متر ، حسب النتائج ، ولكن في كثير من الأحيان إلى 10 أمتار. كل تحديث أقوم بحساب متجه الحركة ، وبالتالي اتضح أنه دقيق للغاية ، لأنه لا يعتمد على مقياس التسارع ، ولكن على الموضع السابق. الطريق (أي ، مجموعة من تاريخ إحداثياتنا) أرسمها على الخريطة بخط ، واتجاه الحركة - بسهم. يتم تحديث كل هذا في الوقت الفعلي تقريبًا ، ولا يمكنك حتى تخيل مدى تحول الخريطة وتصبح أكثر ملاءمة.



كان هناك فارق بسيط هو حقيقة أنه في الثواني الأولى من استلام الموقع ، لا يزال نظام تحديد المواقع معايرة. هل لاحظت كيف تزحف النقطة على الخريطة لفترة من الوقت في البداية؟ مع منطقي ، فإن هذه الحركات الوهمية تعطي على الفور استنتاجات خاطئة حول اتجاه الحركة. ومع الأخذ في الاعتبار حقيقة أن التحديث القادم للنتائج بالفعل بعد 200 متر ، فإن هذا من شأنه أن يضلل السائق بشكل قاطع. لقد قمت بحل هذه المشكلة بكل بساطة: أدعي أننا نقف قبل التحديث الأول. وهذا يعني ، لا تظهر على الخريطة إما سهم (على الرغم من أن النقطة لا تزال تزحف) ، أو طريقًا. ولإلغاء قفل هذه البيانات بعد ذلك ، عندما انتقلنا مسافة مهمة ، مرت 5 ثوانٍ وكانت فرص الحصول على معلومات خاطئة صفرًا تقريبًا.

لقد أضفت أيضًا بطاقة تتعطل عند تحديد نتيجة على الخريطة. في الواقع ، هذه هي نفس البيانات الموجودة في القائمة ، ولكن تتم إضافة معاينة الطريق لهم (نعم ، لا يزال يتم إرجاعها) وزر يبدأ في التنقل.



السطح البيني


بشكل عام ، تم إعادة رسم الواجهة بالكامل. لن أصف كيف أعيد كتابة القوائم وأعدت بناء لوحة الألوان وكل ذلك. سأركز على النقاط الأكثر إثارة للاهتمام. تم توسيع جميع النقوش بشكل متناسب (أصبحت رؤيتي الساقطة في متناول يدي هنا - زادت حتى رأيتها بنفسي من مقعد السائق). تم تغيير الخط إلى SF Pro Rounded - وهذا هو شكل مدور من Apple San Francisco. تحميل هنا ، خط معقول. أوصي بشدة في الحالات التي لا يوجد فيها نص ثابت ، ولكن هناك حالات وفاة كبيرة يجب قراءتها من بعيد.

بعد التفكير ، اتخذت قرارًا غير واضح لإزالة مرشح "على طول الطريق". مثل عامل التصفية حسب الوقت ، في البداية بدا أنها الوظيفة الرئيسية للتطبيق تقريبًا. ومع ذلك ، في مرحلة ما أدركت أنني لم أستخدمه. في وضع القائمة ، يمكنك أن ترى بوضوح الأماكن التي في الطريق ، وفي وضع الخريطة ، الأمر مربك تمامًا. لبعض الوقت ، قمت بسحب هذا المفتاح بدون معنى عبر الواجهات ، وبعد ذلك أخفته ولم أخسر أي شيء. بالإضافة إلى ذلك ، من الناحية الفنية البحتة ، أنتج فروق دقيقة كانت اختيارية بالكامل.

معطيات


في الواقع ، فإن المشكلة الرئيسية في لحظة التطبيق هي البيانات. ما زلت آخذها من OSM مع كل المشاكل المصاحبة لها: تغطية غير متساوية ، والكثير من البيانات القديمة ، وقلة الساعات ، والهواتف ، وما إلى ذلك. تم تصميم الواجهة الخلفية الخاصة بي بطريقة تجعل من السهل للغاية دمج أيٍ من جهات خارجية في هذا التطبيق - فقط هنا من أين يمكن الحصول عليها؟ المرشح الأول (والأفضل) هو أماكن Google ، ولكن بعد الارتفاع الأخير في سعر 1400٪ (الرب) ، لا زلت لا أستطيع تحمل تكاليفها. جميع الباقي - TripAdvisor ، شخصيات قصص الابطال الخارقين وما شابه ذلك - إما باهظة الثمن أو مع api الخرقاء. توفر بعض الخدمات (نفس Mapbox أو هنا) ، تحت ستار بياناتها ، أماكن تمضغها من OSM التي أمتلكها بنفسي.

من كل هذه الأخوة ، قررت أن أحاول الصراخ - يبدو أنه غير مكلف ويبدو أن المعهد كان لائقًا. لقد فهمت أن هذه بوابة أمريكية ، على التوالي ، سيكون هناك حد أدنى من البيانات على أجزاء أخرى من العالم ، ولكن على الأقل بعض التقدم. وفي البداية ، بدا كل شيء جيدًا: لقد قمت بدمج كل شيء في بضع ساعات ، وحتى قرأت أنهم يزعمون تغطية نصف العالم تقريبًا. ومع ذلك ، لم يكن لدي الوقت لنفرح عندما بدأ السيرك. هناك عدد كبير من الأماكن في بياناتهم تحتوي على إحداثيات غير صحيحة. من الواضح أنهم دخلوا الأماكن ليس من خلال النقاط ، ولكن من خلال العناوين - ورتب الترميز الجغرافي الإحداثيات الخاصة بهم بشكل تعسفي. نتيجة لذلك ، لديّ محطة وقود في المكان المناسب ، لكن باستثناء العنوان ، لا توجد بيانات تقريبًا ؛ ولهم مراجعات وتصنيفات وساعات عمل - الإحداثيات فقط هي اليد اليسرى بشكل عام. الخصائص الوحيدة التي يمكن بها تقليل بياناتنا هي الاسم والعنوان. وغالبًا ما يتم كتابة ذلك ، وهذا مكتوب بشكل تعسفي ، مع وجود أخطاء ، تم تنسيقه بشكل غير صحيح ، إلخ. حاولت مقارنتها من خلال مطابقة الترميز الجغرافي + غامض ، ومن حيث المبدأ ، فقد نجحت - على الرغم من أننا لا نزال نفقد نسبة مئوية معينة من الأماكن بهذه الطريقة.

ولكن هذه كانت المشكلة الأولى فقط. سقط الباقي عليها: لديهم بحث نصف قطر غير مستقر للغاية ، ومجموعة من الأخطاء (إذا كنت تقرأ تعليقات الناس في بوابة ، ثم لا شيء على الإطلاق هناك) وهلم جرا. في النهاية ، راجعت متطلبات العلامة التجارية - اتضح أنه يجب عليك استخدام نجومهم الحمراء (!!!) لتصنيف الأماكن. بعد رؤية كيف يبدو ذلك في واجهتي ، بصق وأوقفت هذه المجموعة بأكملها.



نتيجة لذلك ، لا يوجد تقدم كبير في البيانات. في الواقع ، فإن الشيء الوحيد الذي يمكن أن يكون (وسهلة للغاية) القيام به هو المسمار أماكن جوجل. كل شيء على ما يرام هناك ، سواء مع التغطية والإحداثيات. الآن فقط يكلف الكثير من المال الآن. لذلك ، أطلب رأيك: كيف سيكون شعورك تجاه الاشتراك المدفوع؟ في الإصدار المجاني ، سيكون الأمر كما هو عليه الآن ، ولكن بالنسبة لبعض المقدار الرمزي في الشهر ، ستكون بيانات Google أو بيانات Yandex متاحة (تحتاج إلى قراءة التكلفة). لذلك ربما لن أذهب للنهار.

يؤدي


بشكل عام ، لقد اكتشفت مؤخرًا: لمدة عام ونصف تقريبًا أخذني هذا الطلب. بالطبع ، ليس كل وقت فراغي الذي قضيته فيه ، ولكن معظمه بالتأكيد. رميتها عدة مرات لمدة شهر ، وفي بعض الأحيان بدا أنني لن أكملها أبدًا - لكنني فعلت ذلك. ومن حيث المبدأ ، يبدو الآن كما أردت تمامًا من البداية. على طول الطريق ، أتقنت أكثر من تقنية جديدة واكتسبت الكثير من الخبرة. بشكل عام ، كان مثيرا للاهتمام. الآن سأكون سعيدًا إذا كانت النتيجة مفيدة لشخص ما.

PS


حول حقوق الترويج الذاتي: في الفترة الفاصلة قدمت طلبًا آخر لنفسي ، صغير جدًا - مساعد مواقف سيارات. لم أترجمها إلى اللغة الروسية ، ولكن هناك واجهة واحدة. ربما شخص ما سوف تكون مهتمة.

Source: https://habr.com/ru/post/ar459408/


All Articles