تجربتي (نانو) مع Yandex.Maps API أو لماذا أحتاج إلى تعليمات

مقدمة


أنا مطور أندرويد و ...


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


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


إذا كنت كسولًا جدًا في القراءة ، أو كنت بحاجة فورًا إلى استنتاج ، فأرسله إلى آخر "الإجراء 4: هذه هي النهاية / TL ؛ DR"


العمل 0: التعاريف


لنبدأ بالتعاريف: ماذا ولماذا ولماذا.


المهمة : لعرض خريطة لموسكو ، للإشارة إلى أماكن محددة بها دبابيس ، لتتمكن من بناء طريق من الموضع الحالي إلى نقطة محددة (أو إلى عدة نقاط).
التكنولوجيا : Yandex.Maps API. مراجع إلى الوثائق [1] أدناه.
المجموع : قراءة الوثائق ، وتنفيذ الميزات.


كل شيء يبدو بسيطا ، ما يمكن أن يحدث خطأ.


الخطوة 1: البحث


قبل أن تدرس الوثائق ، تحتاج إلى العثور عليها. ابحث في Yandex ، بالطبع ، سنكون في Google - سنجد [2] أو [2] [3]. نحن مطورين ، نرى زر "للمطورين" - انقر. يبدو رمز "Maps API" الضخم كما نحتاج! (إنه فخ!)


في "... / خرائط" [4] ننتظر فقط بحثًا لا نهاية له وخيبة أمل ومعاناة. وهو ما لم يقودني إلى الوثائق اللازمة.


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


العمل 2: دعنا نذهب


العثور على البدء والبدء. في البداية ، كل شيء بسيط.


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


ربما هذا مجرد تشغيل سريع وبعد ذلك سوف نجد وصفًا مفصلاً! (لا يوجد)


دعونا نرى ما هو على الوثائق. وهذا كل شيء ، لا شيء آخر. هناك وثائق تم إنشاؤها فقط مع تعليقات مثل:


Class MapKitFactory Methods getInstance() - Gets the MapKit factory instance. initialize(Context context) - Initializes the MapKit factory. setApiKey(String apiKey) - Sets the API key to use for requests. 

شكرا ياندكس.


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


هل يبدو المعهد قوياً؟ نعم.
هل من الواضح كيفية استخدامها في الحالات أكثر تعقيدًا بقليل من الأمثلة؟ رقم (
كيف نفهم هذا؟ ¯_ (ツ) _ / ¯ قم بالغوص في المدونة ، وفقًا لنتائج البحث ، قم ببيع كتاب حول ما وجدته.


العمل 3: تطوير


المهمة 1: عرض الخريطة
لم أواجه أي صعوبات ، كل شيء في الدليل.


المهمة 2: دبابيس العرض
نحتاج إلى "MapObjectsActivity.java" ، ما نبحث عنه يُسمى العلامات الموضعية ، ونحن نبحث في التعليمات البرمجية لفهم ما يجب فعله بها.


المهمة 3: بناء الطريق
صديقنا هنا هو "MasstransitRoutingActivity.java". يمكنك طلب مسار مختلف: فقط بالسيارة ، فقط سيراً على الأقدام ، وهلم جرا ؛ بالتأكيد ، لا يزال بإمكانك أن تأخذ بعين الاعتبار المترو وأشياء أخرى مختلفة ، لكنني لم أكن بطة.


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


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


الإجراء 4: هذا هو النهاية / TL ؛ DR


النتائج العامة:
بطاقات ياندكس رائعة. كيفية استخدامها ليست واضحة.


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


أبرز الملامح:
كيفية عرض خريطة في المشروع؟ رابط [7] ، كل شيء بسيط هنا.
كيفية إضافة دبوس إلى البطاقة؟ الكلمات الرئيسية العلامة الموضعية ، MapObjects. البحث في العينات.
كيفية بناء الطريق؟ الكلمات الرئيسية MasstransitRouting. البحث في العينات.
كيف تفعل شيئًا آخر؟ البحث في العينات. إذا لم يكن هناك ، فأنت لديك مشكلة.


المراجع:


[1] - https://tech.yandex.com/maps/
[2] - https://tech.yandex.com/
[3] - https://tech.yandex.ru/
[4] - https://tech.yandex.com/maps/
[5] - https://tech.yandex.com/maps/mapkit/
[6] - https://github.com/yandex/mapkit-android-demo
[7] - https://tech.yandex.com/maps/doc/mapkit/3.x/concepts/about-docpage/
[8] - https://github.com/yandex/mapkit-android-demo/tree/master/src/main/java/com/yandex/mapkitdemo
[9] - https://tech.yandex.com/maps/doc/jsapi/2.1/quick-start/index-docpage/
[10] - https://tech.yandex.com/maps/doc/geocoder/desc/concepts/input_params-docpage/

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


All Articles