مقدمة
أنا مطور أندرويد و ...
لقد صادفت أنهيت مشروعًا صغيرًا (حوالي 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/