R语言在线地图神器:Leaflet for R包(四) 弹出窗口和几何要素
来源:互联网 发布:ubuntu etcd集群搭建 编辑:程序博客网 时间:2024/05/21 06:16
五、弹出窗
弹出窗口可能是地图上除了缩放平移以外最常用的交互模式,鼠标点击一个要素,就能弹出一个提示窗,提示窗中能够对点击的要素进行详细的描述。
因为leaflet用的html5技术来实现的,所以弹出窗完美支持HTML语法,这样就可以设置各种超文本信息了,包括但是不限于文字、图片、视频等等。
下面来看一个例子:
tiananm <- paste("<p>","天安门,坐落在中华人民共和国首都北京市的中心、
故宫的南端,与天安门广场以及人民英雄纪念碑、毛主席纪念堂、
人民大会堂、中国国家博物馆隔长安街相望,占地面积4800平方米,
以杰出的建筑艺术和特殊的政治地位为世人所瞩目。","</p>",
"<a href='http://www.tiananmen.org.cn/index.htm'>点击查看更多</a>",
"<p><img src='http://img.blog.csdn.net/20161016004301807' width='50%'></p>",
"<p><img src='http://img.blog.csdn.net/20161016005048911' width='50%'></p>"
)
leaflet()%>%addTiles()%>%addMarkers(lng=116.391, lat=39.906, popup=tiananm)
如果所有的信息都在数据框里面了,那么就更容易了,直接设置显示就行,如下:
pop <- paste("名称:",bj3H$mc,"<br/>",
"等级:",bj3H$dj,"<br/>",
"分类:",bj3H$fl,"<br/>",
"科室数目:",bj3H$fl,"<br/>",
"地址:",bj3H$dizhi1,"<br/>",
"简介:",bj3H$jj,"<br/>",
"标记<img src='",bj3H$hb,"' width='100%'/><br/>"
)
leaflet(bj3H)%>%addTiles()%>%addMarkers(popup=pop)
六:几何图形和线状要素
leaflet除了画点以外,还可以绘制各种几何图层,包括线、圆形(上一节讲了)、方形和复杂多边形等,这一节我们来看看如何绘制这些图形。
首先,还是完成最开始我绘制的马里奥大叔,上一次用坐标够了一个简单的轮廓,现在用完整的矢量化方式,绘制到地图上。步骤如下:
1、矢量化一张马里奥大叔的图片,我一般用ArcGIS,如下:
生成shape file之后,用leaflet绘制出来:
library(maptools)
path <- "E:/workspace/GIS_data/data/other/Mario/"
ma <- readShapePoly(paste(path,"ma.shp",sep =""))
pal <- colorFactor(c("#DB231F", "#91462E","#0F0217","#F6C597","#5454D7"), domain = c("A", "B","C","D","E"))
leaflet(ma) %>% addProviderTiles("Esri.WorldTopoMap") %>%
addPolygons(color = ~pal(Co),stroke = FALSE,fillOpacity = 0.9)
总共也就使用了5种颜色,绘制结果如下:可以看见,因为投影的问题,加载到地图上,稍微有些变形。
leaflet可以直接读取空间数据来进行绘制,根据官方文档,直接支持的对象如下:
1、sp包中的SpatialPolygons, SpatialPolygonsDataFrame, Polygon, 和Polygons类所派生的对象。
2、sp包中的SpatialLines, SpatialLinesDataFrame, Lines,和 Line 类所派生的对象。
3、maps包里面的map对象。
上面我绘制马里奥大叔,用的就是SpatialPolygonsDataFrame对象进行绘制的。
而要读取这些空间对象,通过maptools包,或者rgdal包都可以实现。
下面我们来看一个绘制线的方法,首先还是通过shapefile来绘制:一共两类数据,第一类道路用绿色,第二类道路用红色。
path <- "E:/workspace/GIS_data/data/other/bjline/"
bmr <- readShapeLines(paste(path,"bjMainRoad.shp",sep =""))
pal <- colorFactor(c("green", "red"), domain = c("0x01", "0x02"))
leaflet(bmr) %>% addProviderTiles("Esri.WorldTopoMap") %>%
addPolylines(color=~pal(bmr$MP_TYPE))
关于画圆的例子,我这里就不详细说了,大家可以回去看上一节。
下面来看看画矩形的例子。矩形在地图的绘制的过程中非常常见,比如在军事地图上,一般都是用矩形来进行焦点标识的,如下:(游戏《皇牌空战》……虾神灰常喜欢的一个PSP游戏)
下面来看看一个绘制矩形的例子
leaflet() %>%addProviderTiles("Esri.WorldImagery") %>%
addRectangles(
lng1=116.1, lat1=39.7,
lng2=116.63, lat2=40.1,
weight = 3,color = "red",fillColor = "transparent",
opacity = 1,popup="这里是北京"
)
- R语言在线地图神器:Leaflet for R包(四) 弹出窗口和几何要素
- R语言在线地图神器:Leaflet for R包(一)
- R语言在线地图神器:Leaflet for R包(二)基础底图
- R语言在线地图神器:Leaflet for R包(三) 符号标记
- R语言在线地图神器:Leaflet for R包(五) GeoJson文件的使用
- R语言在线地图神器:Leaflet for R包(六,完结篇)栅格、颜色和图例设置
- R语言:leaflet包做地图展示
- R语言神器
- R语言神器
- [R语言] 加载和安装R包
- R语言中帮助和R包
- [R语言] 加载和安装R包
- R语言百度地图接口包
- ArcGIS API for Silverlight 点击地图上的要素,弹出窗口(使用Telerik RadWindow)
- ArcGIS API for Silverlight 鼠标移入移出地图要素弹出窗口(优化处理)
- R+大地图时代︱ leaflet/leafletCN 动态、交互式绘制地图(遍地代码图)
- R语言地图可视化
- R语言 地图漫谈
- jenkins+gradle+android自动化构建apk(Linux服务器)
- 京东库房数据接入方法
- oracle客户端安装先决条件检查出现PRVF-7531错误
- CSDN啊,你的MarkDown编辑器应该改良一下啦!
- 让浏览器不再显示 https 页面中的 http 请求警报
- R语言在线地图神器:Leaflet for R包(四) 弹出窗口和几何要素
- js计算当前日期上一个月和下一个月
- C语言:预处理的小总结
- JavaScript闭包的底层运行机制
- MPI中的Bcast, Reduce和Gather使用举例
- 使用spark的TF-IDF算法计算单词的重要性
- 一些校验
- java.lang.ClassNotFoundException: org.apache.struts2.dispatcher.FilterDispatcher
- PAT 1095. Cars on Campus (30)(计算每俩车待的时间)