Daha çox

Xəritədə CrowdSource Şekillerinə Vərəqədən istifadə etməyə başlayın


Çalışdığım bir təşkilat üçün bir xəritədə şəkilləri kütlədən təmin etmək istəyirəm. Leaflet Xəritəçəkmə Məhəllələri layihələrinin xətti boyunca bir şey çəkməyə bənzəyir. Həm məkan verilənlər bazaları ilə işləmək, həm də vərəqə xəritələri hazırlamaq təcrübəsi olan biri olaraq, bir vərəqə xəritəsi yazısını bir verilənlər bazasına birləşdirməyə başlamaq üçün bir təlimat varmı deyə düşünürdüm.


CartoDB istifadə

CartoDB Blogundan dərs


Thomas Horner-in cavabında göstərilən mənbələrə əsaslanaraq broşura və CartoDB istifadə edərək github haqqında sadə bir nümunə / təlimat yazdım. Aşağıdakı bəzi əsas məqamlar.

Xüsusi SQL funksiyaları

API açarınızı açıq şəkildə ortaya qoymamaq üçün (və hər kəsin məlumatlarınıza nə etməsinə icazə verin), masanızda istədiyiniz xüsusi hərəkətləri təmin etmək üçün CartoDB-də xüsusi bir SQL funksiyası yazmalısınız. Məsələn, həndəsələr əlavə bir istifadəçi adı və cədvələ çəkilənlərin təsvirini daxil etməkizdiham xəritəsi, aşağıdakıları xüsusi SQL nişanına yazın

MÖVCÜDÜDÜDÜSÜNDƏ FƏALİYYƏTİ BİRDİR insert_crowd_mapping_data (mətn, mətn, mətn); - Yalnız bir dəyərin qoyulduğunu qəbul edir və FUNKSİYANI YARATDIĞINI VƏ DƏYİŞİN insert_crowd_mapping_data (_geojson TEXT, _description TEXT, _name TEXT) - "SELECT" ifadəsində istifadə etmək üçün bir şey qaytarmalı, $$ DECLARE _the_ge kimi tam ədəd; BAŞLAYIN - GeoJSON-u əlavə etmək üçün bir həndəsə tipinə çevirin. _the_geom: = ST_SetSRID (ST_GeomFromGeoJSON (_geojson), 4326); 'INSERT INTO'yu crowdmap_basic (the_geom, təsvir, ad) DƏYƏRLƏRİ ($ 1, $ 2, $ 3)' istifadə edərək, _the_geom, _description, _name; QAYIT 1; SON; $$ DİL plpgsql TƏHLÜKƏSİZLİK TANITICI; --İctimai istifadəçiyə GRANT EXECUTE ON FUNCTION insert_crowd_mapping_data (mətn, mətn, mətn) açıq istifadəçiyə giriş;

AJAX istifadə edərək Leaflet.draw məlumatlarını göndərin

Leaflet ilə işləmək üçün Leaflet.draw sənədlərinə baxın və ya Mike Foster təlimindən istifadə edə bilərsiniz. Mənim nümunəmdə hər bir rəsm çəkildikdən sonra asetData ()SQL sorğusuna (qeyd) keçmək üçün əvvəlcə çəkilmiş elementi GeoJSON-a çevirən funksiya çağırılır.geometriyasonra.toGeoJSON (), CartoDB təlimindəki kod səhvdir)

DrawItems.eachLayer (funksiya (təbəqə) {// CartoDB sql verilənlər bazasına keçmək üçün təsviri GeoJSON-a çevirin var drawing = "'" + JSON.stringify (layer.toGeoJSON (). geometry) + "'"; // Üç parametrdən məlumat daxil etmək üçün SQL sorğusunu qurun: rəsm //, giriş istifadəçi adı və çəkilmiş formanın giriş təsviri var sql = "SELECT" + cartoDBinsertfunction + "("; sql + = drawing; sql + = "," + EnterDescription; sql + = "," + EnterUsername; sql + = ");";

Və sonra məlumatları CartoDB cədvəlinizə ötürmək üçün sql sorğusunu AJAX zənginə əlavə edin.

// TODO: İstifadəçi adınızı dəyişdirin var cartoDBusername = "raphaeld" // Verilənlərin göndərilməsi $ .ajax ({növü: 'POST', url: 'https: //'+cartoDBusername+'.cartodb.com/api/v2/ sql ', crossDomain: true, data: {"q": sql}, dataType:' json ', success: function (responseData, textStatus, jqXHR) {console.log ("Data kaydedildi");}, səhv: function ( responseData, textStatus, errorThrown) {console.log ("Məlumatların saxlanması problemi");}});