leaflet怎么動(dòng)態(tài)地圖

今天小編給大家分享一下leaflet怎么動(dòng)態(tài)地圖的相關(guān)知識(shí)點(diǎn),內(nèi)容詳細(xì),邏輯清晰,相信大部分人都還太了解這方面的知識(shí),所以分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后有所收獲,下面我們一起來了解一下吧。

創(chuàng)新互聯(lián)公司堅(jiān)持“要么做到,要么別承諾”的工作理念,服務(wù)領(lǐng)域包括:成都網(wǎng)站設(shè)計(jì)、成都做網(wǎng)站、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣等服務(wù),滿足客戶于互聯(lián)網(wǎng)時(shí)代的揭陽網(wǎng)站設(shè)計(jì)、移動(dòng)媒體設(shè)計(jì)的需求,幫助企業(yè)找到有效的互聯(lián)網(wǎng)解決方案。努力成為您成熟可靠的網(wǎng)絡(luò)建設(shè)合作伙伴!

加載包:

library(plyr)

library(maps)

library(mapdata)

library(leaflet)

library(stringi)

library(maptools)

library(htmltools)

library(RColorBrewer)

library(ggplot2)

library(rgdal)

地圖素材加載:(leaflet支持多種地圖素材,比如常見的shapefile格式、json格式以及其他在線地圖,但是因?yàn)閖son格式本來還沒有很熟練,這里用shp格式地圖素材為例進(jìn)行加講解)。

肯定會(huì)有小伙伴兒會(huì)問,既然leaflet本身就是在線地圖,為啥還要費(fèi)事兒加載shp地圖素材就進(jìn)行映射,因?yàn)閘eaflet在線地圖提供的地圖底圖本身具有多級(jí)縮放特性,每一縮放級(jí)別都有對(duì)應(yīng)的行政區(qū)劃界線,但是這些參數(shù)和行政區(qū)劃是封裝在底層的js語言中的,我們無法使用R語言直接進(jìn)行調(diào)用,只能作為一個(gè)圖層素材進(jìn)行背景修飾,說白了,其實(shí)我們想要的僅僅是多級(jí)縮放的動(dòng)態(tài)切換效果,這樣再結(jié)合我們自定義的地圖素材,可以呈現(xiàn)出更加完美的效果。(只有熱力填充地圖需要定義區(qū)域界線,而點(diǎn)圖和線圖都可以直接利用leaflet本身的地圖素材,因?yàn)橹恍枰鴺?biāo)點(diǎn)位置即可)。

我們常用的地圖素材資源無非以下三種,R包內(nèi)置的地圖數(shù)據(jù)、shapefile格式和json格式。以下是三種格式素材導(dǎo)入并在leaflet中制作的地圖的基本代碼:

maps包:

mapStates<-map("state",fill=TRUE,plot=FALSE)

leaflet(mapStates) %>% addTiles() %>%addPolygons(fillColor=topo.colors(10,alpha =NULL), stroke = FALSE)

leaflet怎么動(dòng)態(tài)地圖

mapWorld<-map("world",fill=TRUE,col=rainbow(200),ylim=c(-60,90),mar=c(0,0,0,0))

leaflet(mapWorld) %>% addTiles() %>%addPolygons(fillColor = topo.colors(10, alpha = NULL), stroke = FALSE)

leaflet怎么動(dòng)態(tài)地圖

shapefile:

American_map <-readShapePoly("C:/rstudy/USA_map/STATES.SHP")

American_map$STATE_NAME = iconv(American_map$STATE_NAME,"UTF8","CP936") 

leaflet(American_map)%>%addTiles()%>%addPolygons(popup=~STATE_NAME,fillColor=topo.colors(10,alpha=NULL),stroke=FALSE)

leaflet怎么動(dòng)態(tài)地圖

json文件:

library(jsonlite)

geoData<-readLines("D:/R/mapdata/State/USA.json",warn=FALSE)%>%paste(collapse="\n")%>%fromJSON(simplifyVector=FALSE)

geoData$style=list(weight=1,color="red",fillColor="green",opacity=1,fill=TRUE,fillOpacity=0.6)

leaflet()%>%setView(lng=-98.961387,lat=39.708533,zoom=3)%>%addTiles()%>%addGeoJSON(geoData)

leaflet怎么動(dòng)態(tài)地圖

前兩種素材作圖過程大同小異,特別是一些標(biāo)度的屬性聲明很類似ggplot中的函數(shù)過程,但是json格式的素材操作起來就不是很友好,他的標(biāo)度屬性是要在數(shù)據(jù)文件中新建style的list對(duì)象進(jìn)行生命,而且json格式中的list非常多,結(jié)構(gòu)相對(duì)復(fù)雜,至今我也沒完全搞明白如果自由操作。

下面是承接上面shapefile格式素材做展現(xiàn)的四中顏色標(biāo)度(三種連續(xù)性標(biāo)度和一種分類標(biāo)度的映射過程)。

#colorQuantile(連續(xù)性數(shù)值變量的百分比顏色過度):

pal <- colorQuantile("Greens",American_map@data$POP1990)

leaflet(American_map)%>%addTiles()%>%

addPolygons(color=~pal(American_map@data$POP1990),fillOpacity  = 0.8,weight=1)%>%

addLegend(pal=pal,values=American_map@data$POP1990,position="bottomleft",title = "1990年人口數(shù)量(萬人)")

leaflet怎么動(dòng)態(tài)地圖

以下兩種同屬連續(xù)性數(shù)值變量(使用顏色數(shù)量不同)

colorNumeric(多色過度):

pal<-colorNumeric(c("darkgreen","yellow","orangered"),American_map@data$POP1990)

leaflet(American_map)%>%addTiles() %>%

addPolygons(color=~pal(American_map@data$POP1990),fillOpacity  = 0.8,weight=1)%>%

addLegend(pal=pal,values=American_map@data$POP1990,position="bottomleft",title = "1990年人口數(shù)量(萬人")

leaflet怎么動(dòng)態(tài)地圖

colorNumeric(單色過度):

pal<-colorNumeric("Greens",American_map@data$POP1990)

leaflet(American_map)%>%addTiles()%>%

addPolygons(color=~pal(American_map@data$POP1990),fillOpacity  = 0.8,weight=1)%>%

addLegend(pal=pal,values=American_map@data$POP1990,position="bottomleft",title="1990年人口數(shù)量(萬人)")

leaflet怎么動(dòng)態(tài)地圖

以下兩種也同屬連續(xù)性數(shù)值標(biāo)量的顏色標(biāo)度映射(但是可以自定義分組數(shù)量,其實(shí)實(shí)質(zhì)上是對(duì)變量分割,后以分組形式填充,更準(zhǔn)確的說,確實(shí)是應(yīng)用了變量轉(zhuǎn)換的方式(數(shù)值轉(zhuǎn)有序因子),但是過程是自動(dòng)進(jìn)行的,而不是像在ggplot中一樣不需手動(dòng)轉(zhuǎn)換)

colorBin(單色漸變分組過度):

pal<-colorBin("Greens",American_map@data$POP1990,10)

leaflet(American_map)%>%addTiles()%>%

addPolygons(color=~pal(American_map@data$POP1990),fillOpacity=0.8,weight=1)%>%

addLegend(pal=pal,values=American_map@data$POP1990,position="bottomleft",title="1990年人口數(shù)量(萬人)")

leaflet怎么動(dòng)態(tài)地圖

colorBin(多色色漸變分組過度):

pal<-colorBin(c("darkgreen","yellow","orangered"),American_map@data$POP1990,8)

leaflet(American_map) %>% addTiles() %>%

addPolygons(color=~pal(American_map@data$POP1990),fillOpacity=0.8,weight=1)%>%

addLegend(pal=pal,values=American_map@data$POP1990,position="bottomleft",title="1990年人口數(shù)量(萬人)")

leaflet怎么動(dòng)態(tài)地圖

離散標(biāo)度:(這個(gè)例子是用在變量本身就是因子變量的情況下,算是分類變量情況下的顏色標(biāo)度映射)

china_map<-readShapePoly("c:/rstudy/bou2_4p.shp")

mydata<-read.csv("c:/rstudy/geshengzhibiao.csv")

mydata$type<-factor(sample(LETTERS[1:5],33,replace=TRUE))

shape <- merge(china_map,mydata,by="NAME")

pal <- colorFactor(c("green","red","blue","yellow","brown"), domain = c("A", "B","C","D","E"))#設(shè)置色盤:

i_popup<-paste0("<strong>Province:</strong>",shape$NAME,"<br>",

"<strong>Level:</strong>",shape$type)

#設(shè)置彈出窗口

leaflet(shape)%>%addTiles()%>%

 setView(116.387021,39.969369,zoom=3)%>%

addPolygons(fillColor=~pal(shape$type),fillOpacity=0.8,color="#000000",weight=1,popup=i_popup)%>%

addLegend(pal=pal,values=shape@data$type,position="bottomright",title=paste0("小魔方基團(tuán)2016年","<br>","營業(yè)分布等級(jí)"))

leaflet怎么動(dòng)態(tài)地圖

以上地圖效果都支持多節(jié)自動(dòng)縮放和彈窗動(dòng)態(tài)信息顯示(需設(shè)置popup屬性及少量html交互代碼)

leaflet在線地圖底層由js源碼編寫,天然支持html語言,如能結(jié)合html搭配使用,可以在動(dòng)態(tài)地圖元素中,特別是彈窗中無縫嵌入圖片、超鏈接甚至視頻等多類元素,感興趣的小伙伴兒可以自行探索。

以上就是“l(fā)eaflet怎么動(dòng)態(tài)地圖”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家閱讀完這篇文章都有很大的收獲,小編每天都會(huì)為大家更新不同的知識(shí),如果還想學(xué)習(xí)更多的知識(shí),請(qǐng)關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。

文章題目:leaflet怎么動(dòng)態(tài)地圖
路徑分享:http://muchs.cn/article46/pdpjhg.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站策劃域名注冊(cè)、搜索引擎優(yōu)化、動(dòng)態(tài)網(wǎng)站、虛擬主機(jī)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

成都網(wǎng)站建設(shè)公司