这里的新品和R也相对较新,所以请原谅apriori,让我知道我在这篇文章中做错了什么,以避免将来讨厌别人:
我正在尝试创建一个小册子地图的序列(1971年9月到1972年4月)。最后,我想让它们变得闪亮并让用户播放/暂停动画(闪亮的循环动画滑块)。
没有while和for循环为我工作。在运行代码后检查#define NUM_COLS 4
#define NUM_ROWS 3
int main()
{
unsigned char colNum;
int simple_array[NUM_COLS];
int (* ptrToArray)[NUM_COLS]; //int[4] *ptrToArray???
ptrToArray = &simple_array;
for(colNum=0;colNum<NUM_COLS;colNum++)
{
*(ptrToArray)[colNum] =colNum;
}
for(colNum=0;colNum<NUM_COLS;colNum++)
{
printf("%d\t",*(ptrToArray)[colNum]);
}
return 0;
}
时,增量已经起作用,传单不起作用。没有循环,我的&#34;动态传单失败&#34; (见下面的代码部分)工作并打开了一张地图。
是否无法按顺序创建传单?
i
答案 0 :(得分:12)
去年@afterportfolio的帖子的更新版本。我需要添加timelineControl
函数才能使其正常工作。我还需要调用leaflet元素的getMap()
函数来获取绑定到map对象的函数。
library(htmlwidgets)
library(htmltools)
library(leaflet)
library(geojsonio)
#Build data.frame with 10 obs + 3 cols
power <- data.frame(
"Latitude" = c(33.515556, 38.060556, 47.903056, 49.71, 49.041667, 31.934167, 54.140586, 54.140586, 48.494444, 48.494444),
"Longitude" = c(129.837222, -77.789444, 7.563056, 8.415278, 9.175, -82.343889, 13.664422, 13.664422, 17.681944, 17.681944),
"start" = do.call(
"as.Date",
list(
x = c("15-Sep-1971", "1-Dec-1971", "1-Feb-1972", "1-Feb-1972", "1-Feb-1972", "1-Feb-1972", "1-Apr-1972", "1-Apr-1972", "24-Apr-1972", "24-Apr-1972"),
format = "%d-%b-%Y"
)
)
)
# set start same as end
# adjust however you would like
power$end <- power$start + 30
# use geojsonio to convert our data.frame
# to GeoJSON which timeline expects
power_geo <- geojson_json(power,lat="Latitude",lon="Longitude", pretty = T)
# create a leaflet map on which we will build
leaf <- leaflet() %>%
addTiles()
# add leaflet-timeline as a dependency
# to get the js and css
leaf$dependencies[[length(leaf$dependencies)+1]] <- htmlDependency(
name = "leaflet-timeline",
version = "1.0.0",
src = c("href" = "http://skeate.github.io/Leaflet.timeline/"),
script = "javascripts/leaflet.timeline.js",
stylesheet = "stylesheets/leaflet.timeline.css"
)
# use the new onRender in htmlwidgets to run
# this code once our leaflet map is rendered
# I did not spend time perfecting the leaflet-timeline
# options
leaf %>%
setView(44.0665,23.74667,2) %>%
onRender(sprintf(
'
function(el,x){
var power_data = %s;
var timelineControl = L.timelineSliderControl({
formatOutput: function(date) {
return new Date(date).toString();
}
});
var timeline = L.timeline(power_data, {
pointToLayer: function(data, latlng){
var hue_min = 120;
var hue_max = 0;
var hue = hue_min;
return L.circleMarker(latlng, {
radius: 10,
color: "hsl("+hue+", 100%%, 50%%)",
fillColor: "hsl("+hue+", 100%%, 50%%)"
});
},
steps: 1000,
duration: 10000,
showTicks: true
});
timelineControl.addTo(HTMLWidgets.find(".leaflet").getMap());
timelineControl.addTimelines(timeline);
timeline.addTo(HTMLWidgets.find(".leaflet").getMap());
}
',
power_geo
))