@@ -28,6 +28,7 @@ addGlPolygons = function(map,
2828 stroke = TRUE ,
2929 popupOptions = NULL ,
3030 labelOptions = NULL ,
31+ contextMenu = NULL ,
3132 ... ) {
3233
3334 # check data ##########
@@ -73,16 +74,21 @@ addGlPolygons = function(map,
7374 bounds = as.numeric(sf :: st_bbox(data ))
7475
7576 # fillColor ###########
76- palette = " viridis"
77- if (" palette" %in% names(dotopts )) {
78- palette <- dotopts $ palette
79- dotopts $ palette = NULL
77+ if (inherits(fillColor [1 ], " character" ) && startsWith(fillColor [1 ], " #" )) {
78+ cols <- color
79+ cols <- if (length(cols ) == 1 ) {list (cols )} else { cols }
80+ } else {
81+ palette = " viridis"
82+ if (" palette" %in% names(dotopts )) {
83+ palette <- dotopts $ palette
84+ dotopts $ palette = NULL
85+ }
86+ fillColor <- makeColorMatrix(fillColor , data , palette = palette )
87+ if (ncol(fillColor ) != 3 ) stop(" only 3 column fillColor matrix supported so far" )
88+ fillColor = as.data.frame(fillColor , stringsAsFactors = FALSE )
89+ colnames(fillColor ) = c(" r" , " g" , " b" )
90+ cols = yyson_json_str(fillColor , digits = 3 )
8091 }
81- fillColor <- makeColorMatrix(fillColor , data , palette = palette )
82- if (ncol(fillColor ) != 3 ) stop(" only 3 column fillColor matrix supported so far" )
83- fillColor = as.data.frame(fillColor , stringsAsFactors = FALSE )
84- colnames(fillColor ) = c(" r" , " g" , " b" )
85- cols = yyson_json_str(fillColor , digits = 3 )
8692
8793 # label / popup ###########
8894 labels <- leaflet :: evalFormula(label , data )
@@ -120,7 +126,7 @@ addGlPolygons = function(map,
120126 if (inherits(geojsonsf_args , " try-error" )) geojsonsf_args = NULL
121127 if (identical(geojsonsf_args , " sf" )) geojsonsf_args = NULL
122128 }
123- data = do.call(yyson_geojson_str , c(list (data ), dotopts [geojsonsf_args ]))
129+ data = do.call(yyson_geojson_str , c(list (data ), " json_opts " = list ( dotopts [geojsonsf_args ]) ))
124130
125131 # dependencies
126132 map $ dependencies = c(map $ dependencies , glifyDependencies())
@@ -142,6 +148,7 @@ addGlPolygons = function(map,
142148 , stroke
143149 , popupOptions
144150 , labelOptions
151+ , contextMenu
145152 )
146153
147154 leaflet :: expandLimits(
@@ -191,17 +198,22 @@ addGlPolygonsSrc = function(map,
191198 fl_data = paste0(dir_data , " /" , group , " _data.js" )
192199 pre = paste0(' var data = data || {}; data["' , group , ' "] = ' )
193200 writeLines(pre , fl_data )
194- jsonify_args = try(
195- match.arg(
196- names(dotopts )
197- , names(as.list(args(yyjsonr :: opts_write_json )))
198- , several.ok = TRUE
201+ if (length(dotopts ) != 0 ) {
202+ jsonify_args = try(
203+ match.arg(
204+ names(dotopts )
205+ , names(as.list(args(yyjsonr :: opts_write_json )))
206+ , several.ok = TRUE
207+ )
208+ , silent = TRUE
199209 )
200- , silent = TRUE
201- )
202- if (inherits(jsonify_args , " try-error" )) jsonify_args = NULL
203- if (identical(jsonify_args , " sf" )) jsonify_args = NULL
204- cat(' [' , do.call(yyson_geojson_str , c(list (data ), dotopts [jsonify_args ])), ' ];' ,
210+ if (inherits(jsonify_args , " try-error" )) jsonify_args = NULL
211+ if (identical(jsonify_args , " sf" )) jsonify_args = NULL
212+ dotoptslist <- c(" json_opts" = list (dotopts [jsonify_args ]))
213+ } else {
214+ dotoptslist <- NULL
215+ }
216+ cat(' [' , do.call(yyson_geojson_str , c(list (data ), dotoptslist )), ' ];' ,
205217 file = fl_data , sep = " " , append = TRUE )
206218
207219 map $ dependencies = c(
0 commit comments