2016-04-07 7 views
7

जब एक ही निर्देशांक के साथ आर पैकेज पुस्तिका डेटा से एक इंटरैक्टिव वर्लमैप पर मार्करों को साजिश करते समय एक-दूसरे को ओवरलैप कर दिया जाएगा।समान समन्वय पर एकाधिक मार्कर

नीचे दिए गए उदाहरण देखें:

library(leaflet) 

Data <- structure(list(Name = structure(1:3, .Label = c("M1", "M2", "M3"), class = "factor"), Latitude = c(52L, 52L, 51L), Longitude = c(50L, 50L, 50L), Altitude = c(97L, 97L, 108L)), .Names = c("Name", "Latitude", "Longitude", "Altitude"), class = "data.frame", row.names = c(NA, -3L)) 

leaflet(data = Data) %>% 
       addProviderTiles("Esri.WorldImagery", options = providerTileOptions(noWrap = TRUE)) %>% 
       addMarkers(~Longitude, ~Latitude, popup = ~as.character(paste(sep = "", 
                      "<b>",Name,"</b>","<br/>", "Altitude: ",Altitude))) 

सभी क्लस्टर विकल्प के साथ समन्वय को दिखाने के लिए एक संभावना है, लेकिन यह मेरा लक्ष्य से दूर है। मैं क्लस्टर्स नहीं चाहता हूं और केवल ओवरलैपिंग मार्कर दिखाए जाते हैं जब पूरी तरह से ज़ूम किया जाता है। जब पृष्ठभूमि मानचित्र में पूरी तरह से ज़ूम किया जाता है तो ग्रे में बदल जाता है ("मानचित्र डेटा अभी तक उपलब्ध नहीं है")। अतिव्यापी मार्कर की मकड़ी दृश्य मैं क्या चाहते हैं, लेकिन पूर्ण रूप से ज़ूम नहीं जब है

उदाहरण नीचे देखें:।

leaflet(data = Data) %>% 
    addProviderTiles("Esri.WorldImagery", options = providerTileOptions(noWrap = TRUE)) %>% 
    addMarkers(~Longitude, ~Latitude, popup = ~as.character(paste(sep = "", 
                   "<b>",Name,"</b>","<br/>", "Altitude: ",Altitude)), clusterOptions = markerClusterOptions()) 

मैं समाधान मैं चाहता हूँ के बारे में कुछ Literatur पाया, लेकिन मुझे नहीं पता है कि लागू करने के लिए यह आर पुस्तिका कोड/पैकेज में। https://github.com/jawj/OverlappingMarkerSpiderfier-Leaflet

यदि ओवरलैपिंग मार्करों को संभालने के लिए अन्य दृष्टिकोण भी हैं, तो जवाब देने में संकोच न करें। (उदाहरण के लिए एक पॉप-अप में कई मार्करों जानकारी)

उत्तर

9

आप अपने निर्देशांक थोड़ा jitter() सकता है: इस तरह से आप अभी भी मार्कर को अलग करने के लिए ज़ूम इन करना पड़

library(mapview) 
library(sp) 

Data <- structure(list(Name = structure(1:3, .Label = c("M1", "M2", "M3"), 
             class = "factor"), 
         Latitude = c(52L, 52L, 51L), 
         Longitude = c(50L, 50L, 50L), 
         Altitude = c(97L, 97L, 108L)), 
        .Names = c("Name", "Latitude", "Longitude", "Altitude"), 
        class = "data.frame", row.names = c(NA, -3L)) 

Data$lat <- jitter(Data$Latitude, factor = 0.0001) 
Data$lon <- jitter(Data$Longitude, factor = 0.0001) 

coordinates(Data) <- ~ lon + lat 
proj4string(Data) <- "+init=epsg:4326" 

mapview(Data) 

, कितनी दूर आप में निर्भर करता है ज़ूम करने के लिए की जरूरत है पर jitter() में विशेषता।

ध्यान दें कि मैं सादगी के उदाहरण में library(mapview) का उपयोग कर रहा हूं।

संबंधित मुद्दे