Pengalaman (nano) saya dengan Yandex.Maps API atau mengapa saya perlu instruksi

Pendahuluan


Saya adalah pengembang android dan ...


Saya kebetulan menyelesaikan proyek kecil (~ 500 jam), di mana pada awalnya diputuskan untuk menggunakan Yandex.Maps API, karena mengapa menggunakan peta Google untuk Moskow jika ada kami. Sekarang saya akan memberi tahu Anda bagaimana hasilnya.


Saya tidak melakukan penelitian mendalam dan saya tidak akan membuka rahasia apa pun. Tetapi, jika Anda, seperti saya, perlu sangat cepat (kemarin) mulai menggunakan kartu dalam proyek Anda, saya harap saya dapat membantu menghemat sedikit waktu.


Jika Anda terlalu malas untuk membaca, atau Anda langsung membutuhkan kesimpulan, saya kirimkan ke yang terakhir "Tindakan 4: Ini adalah akhir / TL; DR"


Tindakan 0: Definisi


Mari kita mulai dengan definisi: apa, mengapa, mengapa.


Tugas : untuk menampilkan peta Moskow, untuk menunjukkan tempat-tempat tertentu dengan pin, untuk dapat membangun rute dari posisi saat ini ke titik tertentu (atau ke beberapa).
Teknologi : Yandex.Maps API. Referensi dokumentasi [1] di bawah ini.
Total : baca dokumentasi, terapkan fitur.


Semuanya terlihat sederhana, apa yang bisa salah.


Langkah 1: Cari


Sebelum Anda mempelajari dokumentasi, Anda harus menemukannya. Cari Yandex, tentu saja, kita akan berada di Google - kita akan menemukan [2] atau [2] .ru [3]. Kami adalah pengembang, kami melihat tombol "untuk pengembang" - klik. Ikon "Maps API" yang besar terlihat seperti yang kita butuhkan! (Ini jebakan!)


Dalam "... / peta" [4] kita hanya menunggu pencarian, kekecewaan, dan penderitaan yang tak berkesudahan. Yang tidak membawa saya ke dokumentasi yang diperlukan.


Kami kembali satu langkah, gulir ke bawah dan temukan MapKit [5] - inilah kami. Navigasi di sini cukup menyedihkan, jadi inilah tautan-tautan penting - contoh android [6] dan Dokumentasi [7] (terkadang Anda terkadang dapat menemukan sesuatu yang berguna di sini).


Aksi 2: Ayo pergi


Temukan Memulai dan mulai. Pada awalnya, semuanya sederhana.


Pada "Langkah 3. Siapkan perpustakaan" muncul pertanyaan. Tampilan dan pabrik harus dimulai dan dihentikan secara terpisah, jika tidak, seperti yang diinformasikan kepada kami, tidak akan ada yang berhasil. Mengapa Dan apa yang akan terjadi jika sesuatu dimulai, tetapi sesuatu tidak, atau sesuatu dimulai kemudian? Dan jika beberapa pandangan, maka untuk masing-masing Anda memerlukan pabrik, atau apakah itu singleton?


Mungkin ini hanya QuickStart dan kemudian kita akan menemukan deskripsi terperinci! (tidak)


Mari kita lihat apa yang ada di dokumentasi. Dan itu saja, tidak ada yang lain. Hanya ada dokumentasi yang dihasilkan dengan komentar seperti:


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. 

Yandex terima kasih.


Oke, di github ada proyek lain dengan contoh penggunaan [8]. Di dalam setiap kelas kegiatan, ada komentar tentang apa yang dilakukannya dan mengapa itu diperlukan (setelah dokumentasi itu hanya hadiah takdir). Ada beberapa skenario: membuat layer peta khusus, membangun rute untuk mobil, bekerja dengan objek pada peta, dan beberapa lainnya.


Apakah api terlihat kuat? Ya
Apakah jelas bagaimana menggunakannya dalam kasus-kasus yang sedikit lebih rumit daripada contoh-contohnya? Tidak
Bagaimana cara memahami ini? ¯_ (ツ) _ / ¯ Menyelami kode, menurut hasil penelitian, menjual buku tentang apa yang saya temukan.


Tindakan 3: Berkembang


Tugas 1: menampilkan peta
Saya tidak menemui kesulitan, semuanya ada di panduan.


Tugas 2: pin tampilan
Kami membutuhkan "MapObjectsActivity.java", apa yang kami cari disebut Penanda Tempat. Kami mencari di kode untuk memahami apa yang harus dilakukan dengan mereka.


Tugas 3: membangun rute
Teman kita di sini adalah "MasstransitRoutingActivity.java". Anda dapat meminta rute yang berbeda: hanya dengan mobil, hanya berjalan kaki, dan sebagainya; pasti Anda masih dapat mempertimbangkan kereta bawah tanah dan hal-hal lain yang berbeda, tetapi saya tidak merunduk.


Tugas tambahan: memposisikan langsung dan mundur. Kita juga harus bisa menentukan lokasi. Geocoding langsung - tentukan koordinat berdasarkan nama, sebaliknya - tentukan nama berdasarkan koordinat.


Untuk mengatasi masalah ini, Anda harus kembali ke pencarian dan menemukan dokumentasi untuk js [9]. Tampaknya jauh lebih detail dan produktif (saya iri). Kami membutuhkan "permintaan geocoding HTTP" [10] - cukup jelas apa itu dan bagaimana menggunakannya. Terserah penerapan http request-response pada ponsel.


Tindakan 4: Ini adalah akhir / TL; DR


Hasil umum:
Kartu Yandex keren. Cara menggunakannya tidak jelas.


Dokumentasi yang baik untuk "menyentuh" ​​layanan. Dokumentasi yang buruk untuk melakukan sesuatu dengannya. Struktur tautannya adalah "Anda akan menemukan lobak", kualitas temuannya adalah "Ini rodanya, itu bergulir. Dan kemudian Anda sendiri dapat dengan mudah menciptakan mobil, roket, kapal selam. "


Sorotan:
Bagaimana cara menampilkan peta dalam suatu proyek? Tautan [7], semuanya sederhana di sini.
Bagaimana cara menambahkan pin ke kartu? Kata Kunci Penanda Tempat, MapObjects. Cari dalam sampel.
Bagaimana cara membangun rute? Kata Kunci MasstransitRouting. Cari dalam sampel.
Bagaimana melakukan sesuatu yang lain? Cari dalam sampel. Jika tidak ada, maka Anda memiliki masalah.


Referensi:


[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/id480284/


All Articles