R语言在线地图神器:Leaflet for R包(四) 弹出窗口和几何要素
2016-10-18 14:23
567 查看
五、弹出窗
弹出窗口可能是地图上除了缩放平移以外最常用的交互模式,鼠标点击一个要素,就能弹出一个提示窗,提示窗中能够对点击的要素进行详细的描述。
因为leaflet用的html5技术来实现的,所以弹出窗完美支持HTML语法,这样就可以设置各种超文本信息了,包括但是不限于文字、图片、视频等等。
下面来看一个例子:
![](https://oscdn.geek-share.com/Uploads/Images/Content/202006/07/a74ef8c5b90dd7d4f1eb9eaaf3901fb2)
如果所有的信息都在数据框里面了,那么就更容易了,直接设置显示就行,如下:
![](https://oscdn.geek-share.com/Uploads/Images/Content/202012/09/9178fc37d453087c2e60a1e9c7c69e04)
六:几何图形和线状要素
leaflet除了画点以外,还可以绘制各种几何图层,包括线、圆形(上一节讲了)、方形和复杂多边形等,这一节我们来看看如何绘制这些图形。
首先,还是完成最开始我绘制的马里奥大叔,上一次用坐标够了一个简单的轮廓,现在用完整的矢量化方式,绘制到地图上。步骤如下:
1、矢量化一张马里奥大叔的图片,我一般用ArcGIS,如下:
![](https://oscdn.geek-share.com/Uploads/Images/Content/202012/09/dfad4ae4c760c62fb660163165af83ff)
生成shape file之后,用leaflet绘制出来:
![](https://oscdn.geek-share.com/Uploads/Images/Content/202012/09/df8f69b2dc11529fd3a114188694d01d)
总共也就使用了5种颜色,绘制结果如下:可以看见,因为投影的问题,加载到地图上,稍微有些变形。
leaflet可以直接读取空间数据来进行绘制,根据官方文档,直接支持的对象如下:
1、sp包中的SpatialPolygons,
SpatialPolygonsDataFrame, Polygon, 和Polygons
类所派生的对象。
2、sp包中的SpatialLines, SpatialLinesDataFrame, Lines,
和 Line 类所派生的对象。
3、maps包里面的map对象。
上面我绘制马里奥大叔,用的就是SpatialPolygonsDataFrame对象进行绘制的。
而要读取这些空间对象,通过maptools包,或者rgdal包都可以实现。
下面我们来看一个绘制线的方法,首先还是通过shapefile来绘制:一共两类数据,第一类道路用绿色,第二类道路用红色。
![](https://oscdn.geek-share.com/Uploads/Images/Content/202012/09/edbde4535ed61a187b454fd71a73fa78)
关于画圆的例子,我这里就不详细说了,大家可以回去看上一节。
下面来看看画矩形的例子。矩形在地图的绘制的过程中非常常见,比如在军事地图上,一般都是用矩形来进行焦点标识的,如下:(游戏《皇牌空战》……虾神灰常喜欢的一个PSP游戏)
![](https://oscdn.geek-share.com/Uploads/Images/Content/202012/09/e1de98b46abd43da8f7af7b60838b9a6)
下面来看看一个绘制矩形的例子
![](https://oscdn.geek-share.com/Uploads/Images/Content/202012/09/b0dfeacae3d5c4693df27e2c3221a732)
弹出窗口可能是地图上除了缩放平移以外最常用的交互模式,鼠标点击一个要素,就能弹出一个提示窗,提示窗中能够对点击的要素进行详细的描述。
因为leaflet用的html5技术来实现的,所以弹出窗完美支持HTML语法,这样就可以设置各种超文本信息了,包括但是不限于文字、图片、视频等等。
下面来看一个例子:
tiananm <- paste("<p>","天安门,坐落在中华人民共和国首都北京市的中心、 故宫的南端,与天安门广场以及人民英雄纪念碑、毛主席纪念堂、 人民大会堂、中国国家博物馆隔长安街相望,占地面积4800平方米, 以杰出的建筑艺术和特殊的政治地位为世人所瞩目。","</p>", "<a href='http://www.tiananmen.org.cn/index.htm'>点击查看更多</a>", "<p><img src='https://img-blog.csdn.net/20161016004301807' width='50%'></p>", "<p><img src='https://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 for R包(一)
- R语言在线地图神器:Leaflet for R包(一)
- R语言在线地图神器:Leaflet for R包(三) 符号标记
- R语言在线地图神器:Leaflet for R包(二)基础底图
- R语言在线地图神器:Leaflet for R包(五) GeoJson文件的使用
- 弹出在线QQ窗口
- PHP连接mysql数据库,调用Google Map显示不同地方地图信息,使用Javascript弹出悬浮信息窗口展示。
- ArcGIS API for Silverlight 当DataGrid选中项时,地图聚焦弹出窗口,并可以播放音频文件
- js2:事件的学习,弹出窗口,状态栏字改变,地图热点的使用
- go语言使用go-sciter创建桌面应用(七) view对象常用方法,文件选择,窗口弹出,请求
- 弹出窗口的各种在线演示示例
- ArcGIS API for Silverlight 点击地图上的要素,弹出窗口(使用Telerik RadWindow)
- ArcGIS API for Silverlight开发中鼠标左键点击地图上的点弹出窗口及右键点击弹出快捷菜单的实现代码
- Swift语言 OS X程序点击dock图标重新弹出窗口方法