2015-06-20 34 views
1

我想創建一個帶leafleat的假地圖。這個想法是以0,0和半徑2爲中心的一個圓,並在裏面顯示一些標記。這是我如何生成圓(關於如何提高代碼中的註釋都非常歡迎!)使用傳單在R中創建一個帶有標記的假地圖

library(sp) 
library(leaflet) 
circleFun <- function(center = c(0,0),diameter = 1, npoints = 100){ 
    r = diameter/2 
    tt <- seq(0,2*pi,length.out = npoints) 
    xx <- center[1] + r * cos(tt) 
    yy <- center[2] + r * sin(tt) 
    Sr1 = Polygon(cbind(xx, yy)) 
    Srs1 = Polygons(list(Sr1), "s1") 
    SpP = SpatialPolygons(list(Srs1), 1:1) 
    return(SpP) 
} 
Circle.Town <- circleFun(c(0,0),5,npoints = 100) 

我能畫圓用下面的代碼:

leaflet(height = "400px") %>% addPolygons(data = Circle.Town) 

我想使用下面的數據來標記添加到我的地圖:

df1 <- data.frame(long=c(0.6,1,1.4), lat=c(-2, -.8, -0.2), other=c('a', 'b', 'c'), Color=c(10,8,6), 
        type=c('Public', 'Public', 'Private'), id=c(1:3)) 

我想標記的顏色是Color和形狀是type。當我將鼠標懸停在標記上時,我還想提供一個顯示idother的工具提示。

我嘗試這樣做:

leaflet(height = "400px") %>% addPolygons(data = Circle.Town) %>% addMarkers(data = df1, lat = lat, lng =long) 

,但我得到一個錯誤:

Error in inherits(f, "formula") : object 'long' not found 

感謝您的幫助!

+0

我得到'錯誤多邊形(cbind(XX,YY)):環不closed'當我因爲由於浮點計算而導致sin(tt [1])== sin(tt [100])'爲'FALSE',請嘗試並創建'Circle.Town'。 – Spacedman

+0

'leaflet(height =「400px」)%> addPolygons(data = Circle.Town)'適用於我...我不能做的是添加標記:( – Ignacio

回答

3

在數據幀中的列表示爲公式和公式開始與玩弄~

leaflet(height = "400px") %>% 
     addPolygons(data = Circle.Town) %>% 
     addMarkers(data = df1, lat = ~lat, lng =~long) 
+0

謝謝!這讓我更接近我想要的東西(顏色,形狀和工具提示) – Ignacio

+1

我認爲你只能用'icon'參數改變標記,所以你需要爲每個顏色和形狀製作一個圖標,並使用它,它不是微不足道的。 – Spacedman

相關問題