問題タブ [jmapviewer]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - OverlayLayout で正しい描画順序を確保するにはどうすればよいですか?
と を使用しJPanel
て、OverlayLayout
2 つの無関係なコンポーネントを重ねて描画しています。具体的には、独自の線画を含む透明なコンポーネントがあり、その下で、JMapViewer
OpenStreetMap タイルを表示するコンポーネントを使用しています。これは機能します。
JMapViewer がタイルを非同期的にロードする場合を除きます。その場合、読み込みが完了すると自分自身を呼び出しrepaint()
、自分の線画層の上に自分自身を描画します。JMapViewer がいつ自分自身を再描画することを選択したかを知ることができないため、私の行レイヤーはこれを知ることができません。
JPanel
これで、マップ レイヤーが再描画されたときに線レイヤーが再描画されることを期待していました。しかし、これはしません。
これをどのように解決しますか?
java - JMapViewer の世界地図からマウスのクリック位置を取得するにはどうすればよいですか
JMapViewer jar を使用して、JPanel に世界地図を表示しています。
マップ上MapMarkerDot's
に、GPS ポイントを追加します。
問題はMapMarkerDot
、マップをクリックする
と、クリックをキャッチして
クリックされたMapMarkerDot
ID を取得するためのインターフェイスまたはリスナーが見つからないことです。
ここでコードを操作した人はいますか、何をすべきかについていくつかのアイデアを教えてくれます。
jar ソースを変更したくありませんが、インターフェースを入力する必要があるかもしれません。
これは一種の抽象的な質問であることは承知していますが、助けを求めています
java - JMapViewer で 2 つのジオ ポイント間に線を引く
私は JMap Viwer http://wiki.openstreetmap.org/wiki/JMapViewerを使用して Java で OpenStreet Maps を使用しています。マップとすべてを正常にロードできますが、緯度から 2 点間に線を引く方法がわかりませんそして経度。
この種の線を描く機能を知っている人はいますか?
ありがとうございました。
java - JMapViewerOSMマップはドラッグできません
私は、JavaSwingベースのOSMマップに最適なマッピングツールを見つけようとしています。以前、 MapPanelに基づいて機能するマップを作成しました。後で、アプリケーションのクローンを作成し、MapPanelをJMapViewerに置き換えるだけで、これも機能するようになりました。マップ上にマーカーとポリゴンを配置する機能があるので、後者の方が好きです。ただし、欠点は、何らかの理由でマップをマウスでドラッグできないことです。JMapViewerのパッケージには、同じ動作を表示するDemoクラスがあります。OSMマップをJMapViewer内でドラッグ可能にするにはどうすればよいですか?
編集:このコードは、パネルに表示できるマップを描画し、mapController
とを追加することでマップをドラッグ可能にしsetMovementMouseButton()
ます。
java - JMapViewerでマーカーを動的に更新する
こんにちはスタックオーバーフローコミュニティ、
私はJava初心者で、(動的)ソースから座標(latとlon)を取得し、JMapViewer(はい、JXMapViewerではありません)を使用してマーカーをマップに表示する単純なJavaプロジェクトを実行しています。すべての座標を2つのArrayListに入れました。それはそのように見えます:
編集:マップはjMapViewerオブジェクトです。
そして、それはかなりうまく機能します。問題は、タイマーを使用して20秒ごとにこのマップを更新する必要があることです。私が見つけた唯一の方法は、次のようにマップを開閉することでした。
編集:theMapはオブジェクトです(jMapViewerではなくjFrame)メイン関数で作成し(デモのように)、addMapMarkerを使用できません(theMap.addMapMarker(150.2,150.2)のように)
そして、ご想像のとおり、これはかなり厄介です(20秒ごとにウィンドウが開閉し、前の「ブラウジング」セッションが失われます)。それで、それをリフレッシュする方法はありますか?マーカーを動的に追加するか、コンテンツを更新するだけですか?
どうもありがとう。
java - 匿名のEventListenerを使用するJPanel-GCがリスナーを破棄しないのはなぜですか?
私はJMapViewerのオープンソースコードを熟読してきました。他の誰かがそれを見たい場合は、SVNを確認してください。
一言で言えば、メインクラスはJMapViewer
、の拡張であるJPanel
です。メインクラスのDefaultMapController
として機能する別の非常に重要なクラスがあります。MouseListener
私が最初に気付いた奇妙なことは、ビューアがコントローラへの参照を持っていないことです。コンストラクターは、次のようJMapViewer
に、の匿名インスタンスをインスタンス化します。DefaultMapController
コントローラにはたくさんのメソッド(オプション、トグルなど-以下に示す例)があり、現在はまったくアクセスできないため、これは設計上の選択としては不適切なように思われます。
上記の最初のスニペットに示されているように、コントローラーにはビューアーへの参照があります。これは、コントローラーが制御を実行する方法です。
しかし、それから私はさらに奇妙なことを考えました!リスナーのこの匿名インスタンスに参照がない場合、なぜそれが存続することさえ許可されるのですか?GCはすぐにそれを破壊するべきではありませんか?または、GCは、ライブを参照するリスナークラスJComponent
も、なんらかの奇妙な理由で名前がない場合でも、正しく機能するために存続する必要があることを知っているほど賢いですか?
したがって、2つの実際の質問:
- GCがオブジェクトを破棄しないのはなぜですか?
- これは確かに貧弱な設計の選択ですか、それともビューアをインスタンス化するクラスからコントローラにアクセスすることに気付いていない方法がありますか?
このオープンソースライブラリに貢献したいと思います。変更の最初のアイデアは、JMapViewer
クラスを変更してそのコントローラーを参照するフィールドを作成し、コンストラクターを変更して現在匿名のコントローラーをこの新しいフィールドに割り当てることです。しかし、私は無意識のうちに何かを見逃していないことを確認したいと思います。コードベース全体でテキストを検索しましたDefaultMapController
が、それは独自のクラス定義とJMapViewer
コンストラクターの匿名インスタンス化でのみ発生します。
編集:
java.awt.Component
メソッドを使用して、匿名リスナーにアクセスする方法があるように見えますgetMouseListeners()
。したがって、技術的には、私のアプリケーションでは、このコレクションでのインスタンスを検索しDefaultMapController
、それを使用して、コントローラーオプションを変更するために使用する必要のあるメソッドにアクセスできます。
ただし、悪魔の代弁者を演じるために、元のアイデアを使用してマップにそのコントローラーの参照を与えると、一種の循環参照が得られます(マップはコントローラーを認識し、コントローラーはマップを認識します)。これは悪い考えですか?
java - OpenStreetMaps JMapViewer でマップ マーカーを移動する
Swing で JMapViewer を使用してマップを作成しています。車を表すマップ上にいくつかの MapMarkerDots があります。これらのマーカーの位置を更新して、マップ上を移動しているように見せようとしていますが、うまく機能していません。「車」が従うべき座標のリストがありますが、何が起こるかは、位置が更新されますが、これが終了するまでマーカーは再描画されません。つまり、マーカーは最初の場所と最終的な場所ではなく、 2つの間のすべてのポイントで。これに使用しているコードは以下のとおりです。なぜこれが起こっているのかについて何か考えはありますか?
関数の呼び出し (@Catalina からの回答に基づく):
これは、マウス クリック イベントで呼び出されます。
java - JMapViewer に緯度/経度グリッド線を追加する方法
JMapViewer を使用する場合、緯度/経度のグリッド線を自動的に表示する方法はありますか? 残念ながら、JMapViewer.setTileGridVisible
方法は同じではありません。手動で実行できることはわかっていますが、その後、いつどの解像度を表示するかなどを把握する必要があります。面倒に思えます。
swing - JTextArea を JMapViewer に追加しますか?
JTextArea を JMapViewer に追加できますか? 何かのようなもの
別の回避策として、JFrame/JInternalFrame 内の GridBagLayout に追加することもできますが、マップ内にテキストを表示できることを知りたいですか?