2015-08-24 3 views
0

У меня есть блестящее приложение, которое использует библиотеку листовок. Мне нужно теперь использовать функцию get.Bounds(), чтобы получить некоторые координаты. Достаточно легкий (js file):Странный листок поведения и блестящий

var myBounds = map.getBounds(); 
console.log(myBounds); 

Тогда мне нужно отправить координаты глянцеват для дальнейшей обработки (также в моем js file:

Shiny.onInputChange("bounds", myBounds); 

Чтобы убедиться, что работал, он сделал в server.R это :

observe({ 
    print(input$bounds) 
}) 

Однако, когда я запустить приложение в R консоль появляется NULL. Через console.log в моем .js file координаты печатаются в консоли Firefox.

НО, он работает время от времени. Когда я запускаю Shiny App десять раз, он работает иногда три раза, иногда четыре раза, а иногда и никогда. Я получаю координаты, и они печатаются в консоли R.

Я тоже пробовал с reactive, но этот дод не сделал трюк. Такое же поведение здесь.

#get extensions of map 
    myBoundsR <- reactive({ 
    input$bounds 
}) 
#print extensions 
observe(print(myBoundsR())) 

Почему это ?! Почему поведение это непоследовательно ?! Почему линия Shiny.onInputChange("bounds", myBounds); не посылает координаты на server.R?

ответ

1

Вы можете изменить это так:

map.on('moveend', function(e) { 
var myBounds = map.getBounds(); 
Shiny.onInputChange("bounds", myBounds); 
console.log(myBounds); 
}); 

Это может быть проблемой, что расширяет окно не послать за «стартовое окно» ?! Хотя это только предположение. Я ничего не могу найти по этому поводу. А так как js проходит только один раз, сверху вниз, код запускается только один раз. Написав его таким образом, он должен работать, когда вы панорамируете/увеличиваете?

Дайте мне знать, если это вам поможет!

+0

Это работает лучше сейчас. Время от времени я получаю значение «NULL». Однако это происходит довольно редко. – Stophface

Смежные вопросы