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()
без какого-либо обходного пути сейчас.