R листовка поисковый маркер НЕ работает

Я смог использовать эти 2 пакета для поиска маркеров на карте. Однако я только что установил их на моем новом компьютере снова, но кнопка поиска теперь не работает. Как искать маркеры? Спасибо

# We need latest leaflet package from Github, as CRAN package is too old.
devtools::install_github('rstudio/leaflet')
devtools::install_github('bhaskarvk/leaflet.extras')
library("leaflet")
library("leaflet.extras")

cities <- read.csv(textConnection("
City,Lat,Long,Pop
                              Boston,42.3601,-71.0589,645966
                              Hartford,41.7627,-72.6743,125017
                              New York City,40.7127,-74.0059,8406000
                              Philadelphia,39.9500,-75.1667,1553000
                              Pittsburgh,40.4397,-79.9764,305841
                              Providence,41.8236,-71.4222,177994
                              "))

leaflet(cities) %>% addProviderTiles(providers$OpenStreetMap) %>%
addCircleMarkers(lng = ~Long, lat = ~Lat, weight = 1, fillOpacity=0.5,
               radius = ~sqrt(Pop)/50 , popup = ~City, label=~City, group 
='cities') %>%
addResetMapButton() %>%
addSearchFeatures(
targetGroups = 'cities',
options = searchFeaturesOptions(
  zoom=12, openPopup = TRUE, firstTipSubmit = TRUE,
  autoCollapse = TRUE, hideMarkerOnCollapse = TRUE )) %>%
addControl("<P><B>Hint!</B> Search for ...<br/><ul><li>New York</li> 
<li>Boston</li><li>Hartford</li><li>Philadelphia</li><li>Pittsburgh</li> 
<li>Providence</li></ul></P>",
         position='bottomright')

СС панели поиска

1 ответ

У меня была та же проблема, используя тот же пример, который вы предоставили. Я смог понять, что по какой-то причине addSearchFeatures() НЕ будет работать с addCircleMarkers(), но это работает с addMarkers(), Таким образом, я использовал обходной путь, который по существу отображает одни и те же данные дважды: первый раз используя addCircleMarkers() с вашими желаемыми настройками форматирования и второй раз, используя addMarkers() с пользовательским значком, который настолько мал, что вы не сможете увидеть его на карте. Ключ заключается в том, чтобы назначить каждому group, Панель поиска будет искать слой "невидимых" маркеров, но на вашей карте будут отображаться "CircleMarkers".

# using the same reproducible data from the question/example
cities <- read.csv(
    textConnection("City,Lat,Long,Pop
                    Boston,42.3601,-71.0589,645966
                    Hartford,41.7627,-72.6743,125017
                    New York City,40.7127,-74.0059,8406000
                    Philadelphia,39.9500,-75.1667,1553000
                    Pittsburgh,40.4397,-79.9764,305841
                    Providence,41.8236,-71.4222,177994
                    "))


leaflet(cities) %>%
  addProviderTiles(providers$OpenStreetMap) %>%
  # these markers will appear on your map:
  addCircleMarkers(
     lng = ~Long, lat = ~Lat, weight = 1, fillOpacity = 0.5,
     radius = ~sqrt(Pop)/50, popup = ~City, label = ~City, 
     group ='circles' # group needs to be different than addMarkers()
  ) %>%
  addResetMapButton() %>%
  # these markers will be "invisible" on the map:
  addMarkers(
    data = cities, lng = ~Long, lat = ~Lat, label = cities$City,
    group = 'cities', # this is the group to use in addSearchFeatures()
    # make custom icon that is so small you can't see it:
    icon = makeIcon( 
      iconUrl = "http://leafletjs.com/examples/custom-icons/leaf-green.png",
      iconWidth = 1, iconHeight = 1
    )
  ) %>%
  addSearchFeatures(
    targetGroups = 'cities', # group should match addMarkers() group
    options = searchFeaturesOptions(
      zoom=12, openPopup = TRUE, firstTipSubmit = TRUE,
      autoCollapse = TRUE, hideMarkerOnCollapse = TRUE
    )
  ) %>%
addControl("<P><B>Hint!</B> Search for ...<br/><ul><li>New York</li>
           <li>Boston</li><li>Hartford</li><li>Philadelphia</li><li>Pittsburgh</li>
           <li>Providence</li></ul></P>",
           position = 'bottomright'
  )

У меня была эта проблема, и я нашел решение на leaflet.extras Страница проблем на Github.

В вашей установке leaflet.extras:

Откройте lfx-search-prod.js и найдите "e instanceof t.Path ||", а затем удалите его и сохраните файл. Ваш поиск CircleMarker теперь должен работать

Это должно позволить вам использовать addSearchFeature() с участием addCircleMarkers() без какого-либо обходного пути сейчас.

Другие вопросы по тегам