在我正在研究的Leaflet Shiny应用程序中选择和取消选择多边形时,我在更改多边形样式时遇到了一些问题.在我当前的应用程序中,当您单击多边形时,该多边形将以不同的颜色突出显示.理想情况下,我希望用户能够选择并突出显示多个多边形.我还希望用户能够重新单击一个突出显示的多边形以取消选择它.
我能够管理的最好的选择是选择多个多边形,为它们提供相同的组ID"选中",然后在重新单击多边形时取消选择整个组.这是一些示例/可重现的代码:
library(raster)
library(shiny)
library(leaflet)
#load shapefile
rwa <- getData("GADM", country = "RWA", level = 1)
shinyApp(
ui = fluidPage(
leafletOutput("map")
),
server <- function(input, output, session){
#initial map output
output$map <- renderLeaflet({
leaflet() %>%
addTiles() %>%
addPolygons(data = rwa,
fillColor = "white",
fillOpacity = 1,
color = "black",
stroke = T,
weight = 1,
layerId = rwa@data$OBJECTID,
group = "regions")
}) #END RENDER LEAFLET
observeEvent(input$map_shape_click, {
#create object for clicked polygon
click <- input$map_shape_click
#define leaflet proxy for …Run Code Online (Sandbox Code Playgroud) 我想做的很简单.我希望能够在Shiny/Leaflet地图上保存所有点击事件.这是一些示例代码:
library(raster)
library(shiny)
library(leaflet)
#load shapefile
rwa <- getData("GADM", country = "RWA", level = 1)
shinyApp(
ui = fluidPage(
leafletOutput("map")
),
server <- function(input, output, session){
#initial map output
output$map <- renderLeaflet({
leaflet() %>%
addTiles() %>%
addPolygons(data = rwa,
fillColor = "white",
fillOpacity = 1,
color = "black",
stroke = T,
weight = 1,
layerId = rwa@data$OBJECTID,
group = "regions")
}) #END RENDER LEAFLET
observeEvent(input$map_shape_click, {
#create object for clicked polygon
click <- input$map_shape_click
print(click$id)
}) #END OBSERVE EVENT
}) …Run Code Online (Sandbox Code Playgroud) 我正在创建一个类似于这个在画面中完成的Shiny/Leaflet应用程序.它显示了不同年份的世界级贫困观,允许用户按变量,地区和年份过滤地图.
问题是全局国家级shapefile(来自NaturalEarthData)渲染速度非常慢.我正在研究简化这些多边形以减少加载时间的不同方法,但与此同时,我正在研究其他可能的解决方案.
理想情况下,我会使用Shiny控件来切换不同的地图图层并用于leafletProxy更新地图.但是因为每个图层更改再次绘制整个地图,所以这也很慢.
当我在 Leaflet中包含不同的图层时,图层渲染得更快,更快.(我假设这是因为addLayersControlLeaflet中的选项只更改fillColor了多边形而不是重绘整个全局shapefile,如同leafletProxy).但有没有办法在Leaflet之外访问这些层?
为了说明,这里有一些虚拟代码:
#load required libraries
library(shiny)
library(leaflet)
library(raster)
#begin shiny app
shinyApp(
ui <- fluidPage(
leafletOutput("map", width = "100%", height = 600)
), #END UI
server <- function(input, output, session){
#load shapefile
rwa <- getData("GADM", country = "RWA", level = 0)
#render map
output$map <- renderLeaflet({
leaflet() %>%
addTiles() %>%
addPolygons(data = rwa,
fillColor = "blue",
group = "blue") %>%
addPolygons(data = rwa,
fillColor = …Run Code Online (Sandbox Code Playgroud) 我目前无法将 BeautifyMarker 插件与ngx-leafletAngular 2 包集成。
我按照BeautifyMarker 的安装说明以及ngx-leaflet 插件说明进行操作,但没有成功。
我曾经npm install使用 BeautifyMarker、Font Awesome,并且已经安装了 Bootstrap。Leaflet 也已经按照ngx-leaflet官方教程添加并正确配置。
我编辑了angular-cli.json文件以包含 BeautyMarker .css 和 .js 文件,如下所示:
"styles": [
"styles.css",
"../node_modules/leaflet/dist/leaflet.css",
"../node_modules/font-awesome/css/font-awesome.css",
"../node_modules/bootstrap/dist/css/bootstrap.css",
"../node_modules/beautifymarker/leaflet-beautify-marker-icon.css"
],
"scripts": [
"../node_modules/leaflet/dist/leaflet.js",
"../node_modules/beautifymarker/leaflet-beautify-marker-icon.js",
], ...
Run Code Online (Sandbox Code Playgroud)
我还完全导入了该包,因为它扩展了L,如下所示:
import * as L from 'leaflet';
import 'beautifymarker';
Run Code Online (Sandbox Code Playgroud)
这不起作用,所以我也尝试过:
import * as L from 'leaflet';
import '../../node_modules/beautifymarker/leaflet-beautify-marker-icon.js';
Run Code Online (Sandbox Code Playgroud)
还尝试完全省略导入,就像heatmap.js插件一样。这些都不允许我访问L.BeautifyIcon。
有小费吗?
我正在尝试创建一个代表一年中几个月的闪亮滑块。理想情况下,我希望将月份显示为字符串/字符而不是整数(其中 1 = 一月,2 = 二月等)。
我发现了这个问题,这使我得到了这个答案,该答案允许在闪亮的滑块上显示字符。它将 JS 代码插入到 R 中。
当我尝试更改上述答案以适合我的示例时,我可以正确显示月份名称,但我认为 JS 代码中的循环存在问题。而不是一月对应的值 1,它对应的值是 0。我相信这是 JS 从 0 索引的结果,而 R 从 1 索引。但我只是 JS 的新手,所以我'我不知道如何更正这个问题,以便我的滑块正确显示 1s 为一月等。 作为说明,再次说明,我是一个 JS 新手,所以我在这里提供的代码被更改为简单有效的代码,并且可能有很大的提升空间!我只是在研究给出的例子。
library(shiny)
JScode <-
"$(function() {
setTimeout(function(){
var vals = ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'];
for (i = 1; i >= vals.length; i++) {
var val = (1,12);
vals.push(val);
}
$('#month').data('ionRangeSlider').update({'values':vals})
}, 12)})"
runApp(shinyApp(
ui = fluidPage( …Run Code Online (Sandbox Code Playgroud) 我希望能够在我的 Shiny 应用程序中将动态矢量显示为文本输出。我还想利用 HTML(粗体、字体颜色等),因此我使用htmlOutputandrenderUI而不是textOutputand renderTextper this suggest。
这是一些示例代码:
library(shiny)
shinyApp(
ui <- htmlOutput("example"),
server <- function(input, output, session){
# vector (in the real app, this is not a static vector--it will be updated with other inputs)
states <- c("Alabama", "Alaska", "Arizona", "Arkansas")
# text output
output$example <- renderUI({
x <- paste0("<strong>Here are your states</strong>: ", states)
HTML(x)
}) #END RENDERUI
} #END SERVER
) #END SHINYAPP
Run Code Online (Sandbox Code Playgroud)
这段代码的结果是:
这是您所在的州:阿拉巴马州 这是您所在的州: 阿拉斯加州这是 …
我有一个应用程序,其中将多边形动态添加到 Mapbox 图层。我正在使用匹配表达式来设置多边形填充的样式,但是我在使用数组输入确定表达式的语法时遇到了问题。
这是我正在尝试做的一个快速示例:https : //stackblitz.com/edit/angular-bpuswd?file=src%2Fapp%2Fapp.component.ts
我有一个具有特征属性的图层states。根据数据驱动样式的官方地图框示例,我想将每个状态与不同的填充颜色相关联:
// want to match New York to color #F0F and Pennsylvania to color #FF0
const states = ['New York', 'Pennsylvania'];
const colors = ['#F0F', '#FF0'];
const statesAndColors = ['New York', '#F0F', 'Pennsylvania', '#FF0'];
this.map.addLayer({
id: 'states',
type: 'fill',
source: {
type: 'geojson',
data: POLYGONS,
},
paint: {
// doesn't work
'fill-color': ['match', ['string', ['get', 'state']], states, colors, '#AAAAAA']
// also doesn't work
// 'fill-color': ['match', ['string', ['get', 'state']], …Run Code Online (Sandbox Code Playgroud) r ×5
shiny ×5
leaflet ×4
javascript ×2
typescript ×2
angular ×1
click ×1
html ×1
loops ×1
mapbox ×1
mapbox-gl ×1
mapbox-gl-js ×1
ngx-leaflet ×1
plugins ×1
render ×1
selection ×1
vector ×1