あなたのJavaのことについてはっきりとは分かりません。
私の理解が正しい場合は、作業するリーフレットマップがR言語のShiny Appとして作成されています。
リーフレットは、JavaScriptライブラリです。 Shinyが使用しているライブラリのバージョンは0.7.3(かなり古いものですが、まだ動作しています)です。
このバージョンでもかなり良い数字があります。API documentationしかし、それに対応するにはJavaScriptコードを書く必要があります。
今正しく理解していれば、マーカーの変更など、マップが現在行われている方法を変更したいと考えています。次にHTMLページに含める。
あなたはここにいくつかのオプションがあります:
- シャイニーアプリケーションの作成方法を変更するには、元のRコードを使用します。 Rのマーカー/アイコンを直接カスタマイズすることができます。ページ内のに含めることができます。
- Rから生データを取得し、それをJavaScript/JSON(Shiny Appを作成する代わりに)に出力するので、新しいHTMLページのJavaScriptで直接操作できます。カスタマイズされたアイコンでマーカーを作成するには、上記のリンクされたドキュメントを参照してください。
- さらに複雑な解決策は、R部分を変更する必要がないように、Shiny App/widgetからデータを抽出することです。データが頻繁に変更された場合は、維持するのが少し難しいでしょう。その後、データを操作して、前の点のようにJavaScriptですべてのカスタマイズを作成することができます。
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で新しいリーフレットマップを作成するのは簡単です。ここ
はポイント3のためのデモです。たとえばリーフレットGeoJSON tutorialを参照してください。
注:マップには2,000ポイント以上のアイコンがあるため、サークルマーカーの代わりにアイコン付きマーカーを使用すると、ブラウザの速度が大幅に低下します。サークルマーカー(SVGではなくキャンバス上にペイントするのが理想です)を使用するか、クラスタリングプラグイン(例: Leaflet.markercluster。
幸運を祈る!
こんにちは! ありがとうございました。これで正常に動作するために必要なことについて私がまとめたすべての情報をまとめてまとめることに成功しました。それは大きな助けになります。しかし、私はマーカーを変更したくないという混乱がありますが、それらのマーカーをクリックすると、その場所の詳細がポップアップウィンドウに表示されます。私は、Googleマップの仕組みと同様に、位置画像付きのポップアップに小さな画像を追加できるようにしたいと考えています。助けてくれてありがとう、私は通常Rでコーディングしますが、Web開発の経験はほとんどありません。 –