我需要在地图中选择多个标记.这样的事情:Google地图中的框/矩形绘制选择,但使用Leaflet和OSM.
我认为可以通过修改在OSM地图中移动单击并拖动时出现的缩放框来完成,但我不知道该怎么做.
编辑:我重写了_onMouseUp函数,正如L. Sanna所建议的那样,结果是这样的:
_onMouseUp: function (e) {
this._finish();
var map = this._map,
layerPoint = map.mouseEventToLayerPoint(e);
if (this._startLayerPoint.equals(layerPoint)) { return; }
var bounds = new L.LatLngBounds(
map.layerPointToLatLng(this._startLayerPoint),
map.layerPointToLatLng(layerPoint));
var t=0;
var selected = new Array();
for (var i = 0; i < addressPoints.length; i++) {
var a = addressPoints[i];
pt = new L.LatLng(a[0], a[1]);
if (bounds.contains(pt) == true) {
selected[t] = a[2];
t++;
}
}
alert(selected.join('\n'))
},
Run Code Online (Sandbox Code Playgroud) 我有一些有关国家之间贸易的数据,我想将其绘制在世界地图上,每笔贸易一条线,以便显示每对国家之间的贸易量。另一种选择是在每对国家之间仅使用一条线路,其宽度根据国家之间的贸易数量进行调整。
该存储库(图像来自的存储库)包含一些有关如何对飞行数据执行类似操作的信息,但我无法用我的存储库执行此操作。
我的数据如下所示:
trade_data <- data.frame(origin = c("United States", "United States",
"United States", "China", "China",
"United Kingdom"),
dest = c("United States", "United States", "France",
"China","United States", "Germany"))
Run Code Online (Sandbox Code Playgroud)
我试过了:
library(rworldmap)
worldmap <- getMap()
# Add latitude and longitude to each country
trade_data <- trade_data %>%
left_join(select(as.data.frame(worldmap), NAME, LON, LAT),
by = c("origin" = "NAME")) %>%
left_join(select(as.data.frame(worldmap), NAME, LON, LAT),
by = c("dest" = "NAME"))
ggplot() +
geom_polygon(data = worldmap, aes(long,lat, group=group), fill="gray") +
geom_curve(data = trade_data, aes(x = LON.x, …Run Code Online (Sandbox Code Playgroud)