問題タブ [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.

0 投票する
4 に答える
976 参照

java - OverlayLayout で正しい描画順序を確保するにはどうすればよいですか?

と を使用しJPanelて、OverlayLayout2 つの無関係なコンポーネントを重ねて描画しています。具体的には、独自の線画を含む透明なコンポーネントがあり、その下で、JMapViewerOpenStreetMap タイルを表示するコンポーネントを使用しています。これは機能します。

JMapViewer がタイルを非同期的にロードする場合を除きます。その場合、読み込みが完了すると自分自身を呼び出しrepaint()、自分の線画層の上に自分自身を描画します。JMapViewer がいつ自分自身を再描画することを選択したかを知ることができないため、私の行レイヤーはこれを知ることができません。

JPanelこれで、マップ レイヤーが再描画されたときに線レイヤーが再描画されることを期待していました。しかし、これはしません。

これをどのように解決しますか?

0 投票する
2 に答える
2537 参照

java - JMapViewer の世界地図からマウスのクリック位置を取得するにはどうすればよいですか

JMapViewer jar を使用して、JPanel に世界地図を表示しています。

マップ上MapMarkerDot'sに、GPS ポイントを追加します。

問題はMapMarkerDot、マップをクリックする
と、クリックをキャッチして
クリックされたMapMarkerDotID を取得するためのインターフェイスまたはリスナーが見つからないことです。

ここでコードを操作した人はいますか、何をすべきかについていくつかのアイデアを教えてくれます。

jar ソースを変更したくありませんが、インターフェースを入力する必要があるかもしれません。

これは一種の抽象的な質問であることは承知していますが、助けを求めています

0 投票する
2 に答える
5351 参照

java - JMapViewer で 2 つのジオ ポイント間に線を引く

私は JMap Viwer http://wiki.openstreetmap.org/wiki/JMapViewerを使用して Java で OpenStreet Maps を使用しています。マップとすべてを正常にロードできますが、緯度から 2 点間に線を引く方法がわかりませんそして経度。

この種の線を描く機能を知っている人はいますか?

ありがとうございました。

0 投票する
1 に答える
1327 参照

java - JMapViewerOSMマップはドラッグできません

私は、JavaSwingベースのOSMマップに最適なマッピングツールを見つけようとしています。以前、 MapPanelに基づいて機能するマップを作成しました。後で、アプリケーションのクローンを作成し、MapPanelをJMapViewerに置き換えるだけで、これも機能するようになりました。マップ上にマーカーとポリゴンを配置する機能があるので、後者の方が好きです。ただし、欠点は、何らかの理由でマップをマウスでドラッグできないことです。JMapViewerのパッケージには、同じ動作を表示するDemoクラスがあります。OSMマップをJMapViewer内でドラッグ可能にするにはどうすればよいですか?

編集:このコードは、パネルに表示できるマップを描画し、mapControllerとを追加することでマップをドラッグ可能にしsetMovementMouseButton()ます。

0 投票する
2 に答える
2909 参照

java - JMapViewerでマーカーを動的に更新する

こんにちはスタックオーバーフローコミュニティ、

私はJava初心者で、(動的)ソースから座標(latとlon)を取得し、JMapViewer(はい、JXMapViewerではありません)を使用してマーカーをマップに表示する単純なJavaプロジェクトを実行しています。すべての座標を2つのArrayListに入れました。それはそのように見えます:

編集:マップはjMapViewerオブジェクトです。

そして、それはかなりうまく機能します。問題は、タイマーを使用して20秒ごとにこのマップを更新する必要があることです。私が見つけた唯一の方法は、次のようにマップを開閉することでした。

編集:theMapはオブジェクトです(jMapViewerではなくjFrame)メイン関数で作成し(デモのように)、addMapMarkerを使用できません(theMap.addMapMarker(150.2,150.2)のように)

そして、ご想像のとおり、これはかなり厄介です(20秒ごとにウィンドウが開閉し、前の「ブラウジング」セッションが失われます)。それで、それをリフレッシュする方法はありますか?マーカーを動的に追加するか、コンテンツを更新するだけですか?

どうもありがとう。

0 投票する
2 に答える
810 参照

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、それを使用して、コントローラーオプションを変更するために使用する必要のあるメソッドにアクセスできます。

ただし、悪魔の代弁者を演じるために、元のアイデアを使用してマップにそのコントローラーの参照を与えると、一種の循環参照が得られます(マップはコントローラーを認識し、コントローラーはマップを認識します)。これは悪い考えですか?

0 投票する
1 に答える
1499 参照

java - OpenStreetMaps JMapViewer でマップ マーカーを移動する

Swing で JMapViewer を使用してマップを作成しています。車を表すマップ上にいくつかの MapMarkerDots があります。これらのマーカーの位置を更新して、マップ上を移動しているように見せようとしていますが、うまく機能していません。「車」が従うべき座標のリストがありますが、何が起こるかは、位置が更新されますが、これが終了するまでマーカーは再描画されません。つまり、マーカーは最初の場所と最終的な場所ではなく、 2つの間のすべてのポイントで。これに使用しているコードは以下のとおりです。なぜこれが起こっているのかについて何か考えはありますか?

関数の呼び出し (@Catalina からの回答に基づく):

これは、マウス クリック イベントで呼び出されます。

0 投票する
1 に答える
295 参照

java - JMapViewer に緯度/経度グリッド線を追加する方法

JMapViewer を使用する場合、緯度/経度のグリッド線を自動的に表示する方法はありますか? 残念ながら、JMapViewer.setTileGridVisible方法は同じではありません。手動で実行できることはわかっていますが、その後、いつどの解像度を表示するかなどを把握する必要があります。面倒に思えます。

0 投票する
0 に答える
141 参照

swing - JTextArea を JMapViewer に追加しますか?

JTextArea を JMapViewer に追加できますか? 何かのようなもの

別の回避策として、JFrame/JInternalFrame 内の GridBagLayout に追加することもできますが、マップ内にテキストを表示できることを知りたいですか?