Могу ли я добавить слой листовок, который можно включить только с паролем? - PullRequest
2 голосов
/ 09 июля 2020

Я разрабатываю поиск сокровищ с картой-буклетом (изнутри R). По пути участники могут разгадывать загадки, чтобы получить координаты заранее спрятанного пакета с едой на полпути;).

Есть ли способ спроецировать паролем отображение слоя листовок? Это не обязательно должно быть безопасно, это просто игра, но это было бы неплохим трюком.

Пока что у меня есть условное отображение местоположения, как показано ниже.

leaflet() %>% addTiles() %>% setView(12.94, 52.39, 14) %>% 
  addCircleMarkers(12.94, 52.395, col="red", group="Riddle") %>% 
  addLayersControl(overlayGroups="Riddle", options=layersControlOptions(collapsed=FALSE)) %>% 
  hideGroup("Riddle")

1 Ответ

2 голосов
/ 11 июля 2020

Если это просто игра, и вы не хотите писать целое блестящее приложение, вы можете просто добавить немного javascript, чтобы получить аналогичный эффект. Очевидно, это небезопасно.

Рабочий пример можно найти здесь: https://rpubs.com/Jumble/secret_layer

Пароль: «Пикачу»

library(dplyr)
library(leaflet)
library(htmlwidgets)


leaflet() %>%
  addProviderTiles(providers$CartoDB.Positron) %>%
  addMarkers(lat=50.9, lng=-0.9, group="Not Secret") %>%
  setView(lat=37.8, lng=0.96, zoom=3) %>%
  addLayersControl(baseGroups = c("Not Secret", "Secret Location"), options = layersControlOptions(collapsed = F)) %>%
    htmlwidgets::onRender("function(el, x){
    var myMap = this;
    var secretmarker = L.marker([40, 20])
    myMap.on('baselayerchange', function(e){
       if (e.name === 'Secret Location'){
          var secretkey = prompt('Secret Key: '); 
          if (secretkey === 'Pikachu'){
            secretmarker.addTo(myMap);
          } else {
            alert('Incorrect Key');
          }
        } else {
          secretmarker.remove();
        }
    })
  }")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...