rCharts GeoJSON - Изменить цвет заливки полигонов

Я использую карты листовки rCharts для отображения многоугольников на карте на R. Используя буклет листовки, я создал несколько полигонов и добавил их на карту. Однако эти полигоны заполнены синим цветом по умолчанию. Я пытаюсь дать им другой цвет, но безуспешно. Например, я использовал следующий JSON, протестировал его в geojson.io, и он стал зеленым, однако пакет R все еще отображает его синим цветом, как я могу применить цвет?

JSON:

{
  "type": "FeatureCollection",
  "features": [
    {
      "type": "Feature",
      "properties": {
        "stroke": "#555555",
        "stroke-width": 2,
        "stroke-opacity": 1,
        "fill": "#00f900",
        "fill-opacity": 0.5
      },
      "geometry": {
        "type": "Polygon",
        "coordinates": [
          [
            [
              -74.06982421875,
              40.64730356252251
            ],
            [
              -74.06982421875,
              40.79717741518769
            ],
            [
              -73.80615234375,
              40.79717741518769
            ],
            [
              -73.80615234375,
              40.64730356252251
            ],
            [
              -74.06982421875,
              40.64730356252251
            ]
          ]
        ]
      }
    }
  ]
}

Р:

jsonx <- (JSON above)
polys = RJSONIO::fromJSON(jsonX)    
map.center <- c(38,-95)
myMap<-Leaflet$new()
myMap$setView(map.center, 4)
myMap$tileLayer(provider = "Esri.WorldGrayCanvas")
myMap$geoJson(polys)
myMap$set(dom = 'myChart2')
myMap

1 ответ

Решение

В то время как rCharts реализация была хорошей, RStudio's leaflet пакет на основе htmlwidgets гораздо более полнофункциональный и надежный. Если вы можете использовать его вместо этого, вот ответ. Обратите внимание, ничего не нужно делать. leaflet подберу fill в вашем geoJSON,

# uncomment to install the most recent from github
# devtools::install_github("rstudio/leaflet")
#  or older cran #install.packages("leaflet")
library(leaflet)

gj <- '
{
  "type": "FeatureCollection",
  "features": [
  {
  "type": "Feature",
  "properties": {
  "stroke": "#555555",
  "stroke-width": 2,
  "stroke-opacity": 1,
  "fill": "#00f900",
  "fill-opacity": 0.5
  },
  "geometry": {
  "type": "Polygon",
  "coordinates": [
  [
  [
  -74.06982421875,
  40.64730356252251
  ],
  [
  -74.06982421875,
  40.79717741518769
  ],
  [
  -73.80615234375,
  40.79717741518769
  ],
  [
  -73.80615234375,
  40.64730356252251
  ],
  [
  -74.06982421875,
  40.64730356252251
  ]
  ]
  ]
  }
  }
  ]
  }
'

leaflet() %>%
  addTiles() %>%
  setView( -74.1, 40.7, zoom = 10) %>%
  addGeoJSON( gj )


# to show fill works let's change it with gsub

leaflet() %>%
  addTiles() %>%
  setView( -74.1, 40.7, zoom = 10) %>%
  addGeoJSON(
    gsub(
      x = gj
      ,pattern = '(\\"fill\": \\"#00f900\\",)'
      ,replacement = ""
    )
    # demo addGeoJSON fillColor argument
    ,fillColor = 'green'
  )
Другие вопросы по тегам