Цвет текста ярлыка совпадения с цветом объекта

Обходные пути выше (спасибо!) неправильно решают проблему возврата объектов, предоставленных методу отложенного resolve(), потому что jQuery вызывает обратные вызовы done() и fail() с отдельными параметрами, а не с массивом. Это означает, что мы должны использовать псевдо-массив arguments, чтобы получить все разрешенные / отклоненные объекты, возвращенные массивом отложенных, что является уродливым:

$.when.apply($,deferreds).then(function() {
     var objects=arguments; // The array of resolved objects as a pseudo-array
     ...
};

Поскольку мы прошли в массиве отложенных , было бы неплохо вернуть массив результатов. Также было бы неплохо вернуть фактический массив вместо псевдо-массива, чтобы мы могли использовать такие методы, как Array.sort().

Вот решение, основанное на методе метода [.9], который обращается к этим Проблемы:

// Put somewhere in your scripting environment
if (typeof jQuery.when.all === 'undefined') {
    jQuery.when.all = function (deferreds) {
        return $.Deferred(function (def) {
            $.when.apply(jQuery, deferreds).then(
                function () {
                    def.resolveWith(this, [Array.prototype.slice.call(arguments)]);
                },
                function () {
                    def.rejectWith(this, [Array.prototype.slice.call(arguments)]);
                });
        });
    }
}

Теперь вы можете просто передать массив отложенных / обещаний и вернуть массив разрешенных / отвергнутых объектов в ваш обратный вызов, например:

$.when.all(deferreds).then(function(objects) {
    console.log("Resolved objects:", objects);
});
1
задан astrofunkswag 15 January 2019 в 23:05
поделиться

1 ответ

Очень хакерское решение, но оно работает. Я зацикливаю строки данных и использую addLabelOnlyMarkers с центроидом многоугольника строк, используя st_centroid. Я запускаю функцию pal на каждой итерации.

for(i in 1:nrow(nc2)) {
  text_col = pal(nc2$NAME[i])
  p <- p %>% 
    addLabelOnlyMarkers(data = st_centroid(nc2[i,]), 
                        label = ~NAME, 
                        labelOptions = labelOptions(
                            noHide = T, textOnly = T,
                            style = list('color' = text_col)
                        )
  )
}

Я все еще приветствую любое лучшее решение этого ...

0
ответ дан astrofunkswag 15 January 2019 в 23:05
поделиться
Другие вопросы по тегам:

Похожие вопросы: