时空维度挖掘(二)之 leaflet
|
leaflet 中提供许多与shiny结合的事件控制特性,比如对不同leaflet对象的点击、悬停、双击等等。 通过 假设现在通过 leaflet 地图对象Id 为 map: leafletOutput("map",width = "100%",height = "100%")
leaflet 交互事件 遵循这个命名规则: {
"lat":23.12321,"lng":123.123123,"id":"map","featureId":"xxx",# 只有geojson才有
"properties":"xxx" # 只有geojson才有
}
那么可以通过下面代码捕捉对应事件: input$map_shape_click # 获取多边形点击 input$map_marker_click # 获取标识点击 input$map_geojson_click # 获取geojson点击 input$map_topojson_click # 获取 topojson点击 input$map_click # 任意点击地图位置 返回经纬度和图层id,以list的形式返回,input$map_mouSEOver # 鼠标悬停 input$map_mouSEOut # 鼠标移出 input$map_bounds # 地图视野边界, 通过bounds 可以控制数据只显示视野内来加快数据渲染效果。返回的结果以 north,east,south,west 的一组list呈现 input$map_zoom # 返回视野深度 通常在 0-19之间 地理围栏目前 leaflet.extras 也支持更多的插件中的事件。比如可以通过多边形的编辑实现地理围栏: leaflet::leaflet() %>%
leafletCN::amap()%>%
leaflet::setView(lng = 116,lat = 39,zoom = 12) %>%
addDrawToolbar(
targetGroup='draw',editOptions = editToolbarOptions(selectedPathOptions = selectedPathOptions())) %>%
addLayersControl(overlayGroups = c('draw'),options =
layersControlOptions(collapsed=FALSE)) %>%
addStyleEditor()
# 通过 input$MAPID_draw_all_features 会返回地理围栏的相关信息
# input$MAPID_draw_start 返回 绘制开始 信息
# input$MAPID_draw_stop 返回 绘制停止 信息
# input$MAPID_draw_new_feature 返回 创建绘制 信息
# input$MAPID_draw_edited_features 返回 编辑绘制 信息
# input$MAPID_draw_deleted_features 返回 删除绘制 信息
observeEvent(input$map_draw_all_features,{
#print("All Features")
num_features <- length(input$map_draw_all_features$features)
if (is.null(unlist(input$map_draw_all_features$features[num_features]))){
return(NULL)
}#判空
if(input$map_draw_all_features$features[[num_features]]$properties$feature_type != 'polygon') {
return(NULL)
}
cords_list <- input$map_draw_all_features$features[[num_features]]$geometry$coordinates[[1]]
})
数据结构这里有一个用于表述地理数据的特殊数据框,被称为 SpatialPointsDataFrame,通过它可以实现空间几何中点、线、面的表达。 它主要有下面5个部分组成:
算法空间计算中点、线、面的数据 一、叠置分析二、邻域分析三、窗口分析案例参考资料
相关产品
|

