Daha çox

Axtarış qutusunu Carto-dakı verilənlər sütunu ilə əlaqələndirirsiniz?


CartoDB-nin dərc edilmiş bir xəritəsindəki axtarış qutusu, CartoDB xəritəsində göstərilən verilənlər bazası ilə əlaqələndirilmir. Axtarış qutusunu bir verilənlər bazasının müəyyən bir sütununa necə bağlaya bilərəm?


Ümid edirəm bu link sizin üçün bir az kömək edə bilər. Bağlantıdakı kod, kartodb masanızdakı müəyyən bir sütun baxımından axtarış qutusu üçün avtomatik tamamlama edə bilər.

http://bl.ocks.org/javisantana/7932459

var sql = cartodb.SQL ({user: 'YOUR_CARTODB_ACCOUNT_NAME'}); $ (YOUR_INPUT_BOX) .autompomplete ({mənbə: function (sorğu, cavab) {var s sql.execute ("COLUMN_NAME" kimi "" + request.term + "% '" olduğu TABLE_NAME-dan COLUMN_NAME seçin). {cavab (data.rows.map (function (r) {return {value: r.COLUMN_NAME};}))}}}, minLength: 2});

Əsasən, bu kod parçası, giriş mətnini kartodb masanızın sütunundakı bütün dəyərlərlə uyğunlaşdıraraq giriş qutusunu avtomatik tamamlamağa kömək edir.

sql.execute ("COLUMN_NAME olduğu yerdəki TABLE_NAME 'dan COLUMN_NAME seçin'" + request.term + "% '"). hazırlandı (funksiya (məlumat) {cavab (data.rows.map (function (r) {return {dəyər: r .COLUMN_NAME};})

Bu kod parçası kartodb cədvəlinizi giriş mətni baxımından axtarmaq üçün istifadə olunur.
Geri çağırma metodu bütün uyğun dəyərləri qaytarır. Birdən çox uyğun dəyəriniz varsa, bütün nəticələri göstərməyiniz üçün açılan siyahı çəkəcəkdir.

Bu iki mənbəyi daxil etməyi unutmayın.

 

Dediyiniz kimi, axtarış qutusu təbii olaraq bir geocoder kimi fəaliyyət göstərir.

Cədvəlinizin içərisində axtarması üçün CartoDB.js istifadə etməli və xüsusi kod hazırlamalısınız.

Əsas fikirlər:

  • Axtarış funksiyasını genişləndirməlisiniz və ya bu funksiyanı təmin etmək üçün başqa bir mətn qutusu yaratmalısınız

  • Nəticələrinizin axtarıldığı bir sorğu yaratmalısınız

  • Sorğunun nəticələrini almaq və xəritəni həmin vəziyyətdə mərkəzləşdirmək istərdiniz (map.fitBounds bunu edəcək, aşağıdakı nümunəni yoxlayın)

Burada bir nümunə göstərim. Bir selektoru birbaşa tətbiq etdiyim üçün soruşduğunuz bir az fərqlidir, ancaq seçicini mətn qutusu ilə dəyişə və sorğuya əlavə etmək üçün dəyərini əldə edə bilərsiniz. Mənbə kodu aşağıdakı kimidir:

          

Xəritənin mərkəzləşdirilməsini istədiyiniz ölkəni seçmək üçün seçicidən istifadə edin:

Ümumiyyətlə xüsusi bir şərh:

Bu istifadə vəziyyəti həmişə eyni sualı alır. "Ah, insanlar mənim tətbiqimə SQL daxil edə biləcəklər?"

Sorğularda istifadə üçün təhlükəsiz və sql enjeksiyonu təhlükəsiz olan CartoDB SQL API istifadə ediləcəkdir. Əlbəttə ki, hesabınızda ümumi məlumatlarınızı saxlasanız, əldə edilə bilər, ancaq bu bir səhv deyil, SQL API adlı bir xüsusiyyətdir. Xahiş edirəm, heç vaxt bu sorğulardan birində API açarınızı əlavə edin, çünki bu bir təhlükəsizlik sızıntısıdır və Javascript sənədinizə daxil olan hər kəs API açarınızı ala və məlumatlarınızı yoxlamaq, redaktə etmək və ya silmək üçün giriş əldə edə biləcəkdir. Ancaq təşvişə düşməyin, parolunuzu açıq şəkildə paylaşsanız eynidir! :-)


Videoya baxın: CS50 2016 Week 0 at Yale pre-release (Oktyabr 2021).