首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >是否可以使用rMaps在R中的地图上绘制路线?

是否可以使用rMaps在R中的地图上绘制路线?
EN

Stack Overflow用户
提问于 2014-03-26 09:44:54
回答 2查看 3.3K关注 0票数 2

我正在尝试使用rmap http://rmaps.github.io/来绘制车辆在地图上所遵循的路线。在我的理想世界中,地图应该:*是交互式的(即可缩放的,滚动的)*存储和显示元数据(例如,当你点击一个标记时得到一个弹出)**显示车辆行驶的实际路径(或者使用路径点之间的直线,甚至可能是沿着道路)。*嵌入在闪亮的网页中

通过rMaps向传单地图添加标记是非常容易的。我只是想知道是否可以添加Leaflet.js中可用的其他结构,例如Polyline和Polygon。如果没有,这类功能是否计划在将来的版本中使用?

我在这里查看了rMaps代码中的传单:https://github.com/ramnathv/rMaps/blob/master/R/Leaflet.R和我没有看到任何我认识的东西。geoJson有一个函数,我不知道如何使用。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-03-26 13:57:18

为了添加一个政治元素(例如圆圈),您应该:

  1. 转到实际地图的html页面的位置(您应该看到浏览器中的位置),然后用右键打开它,最好使用记事本++。
  2. 寻找: var map = L.map(spec.dom,{ fullscreenControl: true }).setView(spec.center,spec.zoom); if (spec.provider){ L.tileLayer(spec.urlTemplate,spec.layerOpts).addTo(map) }

在此之后,您可以使用以下代码添加一个很好的圆圈(不要忘记保存文件):

代码语言:javascript
复制
L.circle([29.7601927,-95.3693896],7200,{color:'red'}).addTo(map).bindPopup('some thing').addTo(map)

有关更多信息,只需参阅http://leafletjs.com/reference.html中的传单API即可。

顺便说一句,rmap只是R和传单的接口,如果您想要创建真正疯狂的东西,您应该习惯于打开html文件并从传单API中添加java脚本代码,人们创建了惊人的插件,更多的是添加多边形,关于很酷的例子请参阅:

http://leafletjs.com/plugins.html

我也很喜欢这个:

http://threatwiki.thesentinelproject.org/iranvisualization

只是为了添加一些关于rMaps如何工作的附加信息(对于rCharts也是如此)

  1. rMaps所做的就是创建javascript代码,地图的构建是由您的web浏览器完成的,这意味着如果您要去安装rMap并将其复制到没有R的另一台计算机上的库,则html文件将运行得非常完美,这意味着您可以创建一个rMap,然后在html文件中手动添加rmaps不支持的任何其他元素,就像我解释的(我演示了如何在“循环”中这样做)。
  2. 对于闪亮的应用程序,您不能手动添加内容,因此您必须确保rmap中支持API中的元素。为了知道支持API的哪些元素,首先创建一个映射: 地图<-单张$new()

然后查看"map“的所有元素,并将其与传单API进行比较。例如,您可以在API中找到标记创建命令:

http://leafletjs.com/reference.html#marker (来自传单API),由以下人员创建:

代码语言:javascript
复制
L.marker([51.5, -0.09]).bindPopup('Hi. I am a popup').addTo(map);

在rMaps中有一个等价的:

代码语言:javascript
复制
map$marker(
  c(51.5, -0.09),
  bindPopup = 'Hi. I am a popup'
)

对于传单API中的每个元素,您只需一步一步地走,如果它不存在,那么您可以要求Github中的ramnath添加它为https://github.com/ramnathv/rMaps/pulls,或者由您自己创建一个在R代码中这样做的函数。

票数 1
EN

Stack Overflow用户

发布于 2014-04-05 19:37:37

我一直在研究同样的问题。您可以在这里找到一个“传单路由机”插件(https://github.com/perliedman/leaflet-routing-machine),它具有计算路径点之间路由的功能。他们的演示很酷!

我一直试图用rMaps和这个传单插件来绘制两个地点之间的路线。我仍然在努力让我的代码工作(我想我遗漏了一些东西),但是到目前为止它看起来是这样的。

代码语言:javascript
复制
library(rMaps)
library(leaflet)

map = Leaflet$new()
map$setView(c(50.6067, 3.6254), 6)
map$tileLayer(provider="MapQuestOpen.OSM")
map$marker(c(48.8588,2.3469), bindPopup = 'Pickup Location')
map$marker(c(52.3546,4.9039), bindPopup = 'Dropoff Location')
map

map$addAssets(jshead = c("leaflet-routing-machine.min.js"))
map$setTemplate(afterScript = sprintf("
   <script>
   L.Routing.control({
       waypoints: [
           L.latLng(48.8588,2.3469),
           L.latLng(52.3546,4.9039)
       ],
       geocoder: L.Control.Geocoder.nominatim(),
       plan: L.Routing.plan(null, {
           waypointIcon: function(i) {
                return new L.Icon.Label.Default({ labelText: String.fromCharCode(65 + i)});
           }
       })
   }).addTo(map);
   </script>
 "))
map

至少,我认为如果你看看这个插件可能会有帮助,虽然我还没有完全弄清楚如何绘制路线!

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22656990

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档