Daha çox

CartoDB-da bir düymə ilə iki xəritə qatını necə süzmək olar?


Son istifadəçinin məlumatları süzgəcdən keçirməsini istədiyim bir Xəritəçəkmə layihəsi üzərində işləyirəm. Bu təlimat (http://docs.cartodb.com/tutorials/toggle_map_view.html) bunun üçün bir yol verdi, belə ki son istifadəçi düymələrə basaraq effektiv şəkildə süzə bilər. İndi harada qaldığım yerdirsə, xəritəmin iki təbəqəsi var (biri nöqtələr üçün, biri xətlər üçün) və düymənin yalnız bir qatdan daha çox hər iki təbəqəyə tətbiq olunmasını istəyirəm. Bunun baş verməsi üçün kodun hansı hissələrini dəyişdirməliyəm və hansı dəyişiklikləri etməliyəm?

Dərslikdən xüsusilə baxdığım hissə:

var sublayers = []; cartodb.createLayer (map, layerUrl) .addTo (map) .on ('done', function (layer) {// birinci qat üçün sorğunu dəyişdirin var subLayerOptions = {sql: "SELECT * FROM ne_10m_populated_places_simple", cartocss: " # ne_10m_populated_places_simple {marker-fill: # F84F40; marker-width: 8; marker-line-color: white; marker-line-width: 2; marker-clip: false; marker-over-overlap: true;} "} var sublayer = layer.getSubLayer (0); sublayer.set (subLayerOptions); sublayers.push (sublayer);}). on ('error', function () {// the error log}); // düymələr vurulduqda yerinə yetiriləcək sorğuları qatımızın SQL-sini dəyişdirərək var LayerActions = {all: function () {sublayers [0] .setSQL ("SELECT * FROM ne_10m_populated_places_simple"); doğru qayıt; }, paytaxtlar: function () {sublayers [0] .setSQL ("SELECT * FROM ne_10m_populated_places_simple WHERE featurecla = 'Admin-0 capital'"); doğru qayıt; }, megacities: function () {sublayers [0] .set ({sql: "SELECT * FROM ne_10m_populated_places_simple WHERE megacity = 1", // deyildiyi kimi, ballarınızın sizin kimi görünməsi üçün bir az CartoCSS kodu da əlavə edə bilərsiniz. müxtəlif sorğular üçün istək // cartocss: "# ne_10m_populated_places_simple {marker-fill: black;}"}); doğru qayıt; }}

Düzəliş et: İndi görünür ki, bunu yalnız düymə funksiyalarını iki hərəkət etməklə edə bilərəm (yəni bir cədvəldən x seçin, digər cədvəldən x seçin). Bu mümkündürmü? Varsa, necə?


Bu problemi həll etməyin ən yaxşı yolu olub-olmadığını bilmirəm, amma CartoDB-yə qayıdıb iki qatlı bir xəritəyə sahib olmaq əvəzinə iki ayrı xəritə düzəldərək işə salmağı bacardım. (Nöqtələrin və sətirlərin iki dəfə göstərilməsi və qismən süzülməsi ilə əlaqəli problemlər yaşadım və s.) Birinci yarını çoxaldım (yəni varlayerURL -> xətanı qeyd et) və hər yerə "2" əlavə etdim:

var layer2Url = 'https://myusername.cartodb.com/ap/blahblahblah'; var sublayers2 = []; cartodb.createLayer (map, layer2Url) .addTo (map) .on ('done', function (layer) {var subLayer2Options = {sql: "SELECT * FROM my_map_name", cartocss: "#my_map_name {marker-fill-opacity:" 0.9; marker-line-color: #FFF; marker-line-width: 1; marker-line-opacity: 1; marker-yerləşdirmə: point; marker tipi: elips; marker-width: 10; marker-fill: # F11810; marker-allow-overlap: true;} "} var sublayer2 = layer.getSubLayer (0); sublayer2.set (subLayer2Options); sublayers.push (sublayer2);}). On ('səhv', function () { // xətanı qeyd edin});

Sonra bunu dəyişdirərək ikinci yarıya dəyişiklik etdim:

var LayerActions = {all: function () {sublayers [0] .setSQL ("SELECT * FROM ne_10m_populated_places_simple"); doğru qayıt; },

üçün

var LayerActions = {all: function () {sublayers [0] .setSQL ("SELECT * FROM ne_10m_populated_places_simple"); alt qat [1] .setSQL ("SEÇMƏK * FROM next_layer_name"); doğru qayıt; },


Videoya baxın: Visualizing Fulcrum Video Tracks With CartoDB (Oktyabr 2021).