不完全确定你的Java事情。
如果我的理解是正确的,您要使用的Leaflet地图已经作为R语言的Shiny App创建。
单张是JavaScript库。 Shiny使用的那个库的版本似乎是0.7.3(现在很老,但仍然有效)。
即使是该版本,也有相当不错的API documentation。但是您需要编写JavaScript代码才能使用它。
现在,如果我理解正确,您想要修改地图当前已完成的方式,例如更改标记。然后将其包含在HTML页面中。
您有几种选择在这里:
- 使用最初的R代码来改变闪亮应用程序是如何创建的。我认为您可以直接在R中自定义标记/图标。然后您可以将它包含在页面中的中。
- 从R获取原始数据并将其输出到JavaScript/JSON(而不是创建Shiny应用程序),以便您可以直接在全新的HTML页面的JavaScript中操作它。参考上面的链接文档来创建带有自定义图标的标记。
- 更复杂的解决方案是从Shiny App/Widget中提取数据,以便不必修改R部分。如果数据频繁变化,将会稍微难以维护。然后,您可以操作数据并使用JavaScript创建所有自定义设置,就像上一点一样。
这里是3点示范:
var group = L.featureGroup();
$(document).ready(function() {
var mapContainer = $("#htmlwidget-98ae620727ee15448353")[0];
var map = mapContainer["htmlwidget_data_init_result"];
map.eachLayer(function(layer) {
// Filter only for Circle Markers, as the map looks to use only those for data.
if (layer instanceof L.CircleMarker) {
layer.addTo(group);
// Embed the popup data into the layer feature properties, so that it is recorded in the GeoJSON output.
layer.feature = layer.feature || {}; // Initialize the layer feature, in case it does not exist yet.
layer.feature.type = "Feature";
layer.feature.properties = layer.feature.properties || {};
layer.feature.properties.data = layer._popup.getContent();
layer.feature.properties.color = layer.options.color;
}
});
console.log(group.toGeoJSON());
});
现场演示:https://plnkr.co/edit/oWbewb53CLZxmfVj8WbN
一旦你有你的数据GeoJSON的,它很容易在JavaScript中创建一个新的单张地图。参见例如小册子GeoJSON tutorial。
注:如你的地图拥有超过2,000点,使用标记有图标(而不是圆形标记)浏览器将显着放缓。您应该坚持使用Circle Markers(理想情况下将其绘制在Canvas而不是SVG上),或者使用群集插件(例如, Leaflet.markercluster。
祝你好运!
您好! 谢谢你这一点,你已经成功地设法拼凑我设法拼凑什么我需要做的,成功地与这方面的工作的所有信息。这是一个巨大的帮助。然而,有一些困惑,我不希望更改标记 - 但是当您单击这些标记时,会弹出一个窗口,其中包含有关位置的详细信息。我希望能够为位置图像的每个弹出窗口添加一个小图像,类似于Google地图的工作方式。感谢您的帮助,我通常使用R编码,但Web开发经验很少。 –