問題タブ [osmdroid]
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.
android - OSMDroidのマップを使用して道路と対話しますか?
AndroidでOSMDroidを使用する方法を学ぼうとしています。私は、SDカードのzipアーカイブからのマプタイルを表示するMapViewを持っていることに気づきました。アーカイブは、MobileAtlasCreatorを使用してOpenStreetMapMapnik形式で作成されました。
それで、地図に表示されている道路や小道をどのように操作するのか疑問に思っていますか?私が理解している限り、ルートを計算するためにこれを行う必要があります。
OSMDroidを使用することは可能ですか?別のマップ形式を使用する必要がありますか?
android - osmdroid を使い始める - インストールに失敗しましたか?
私はアンドロイドが初めてです。私はJavaの知識があり(広範囲ではありません)、いくつかのAndroidチュートリアルを行いました。
現時点では osmdroid を使用しようとしていますが、マップを表示したいだけです。
私はここからコードを使用しています: OpenSourceMaps を表示するための OSMdroid ライブラリのセットアップを支援します。しかし、(正しい API レベルの仮想デバイスで) 実行しようとすると、コンソールに次のように表示されます。
私はまだlogcatがかなり混乱していると思います。それは言う: PID 90 tag installd 'Couldn't openat cache: No such file or directory'
ここで何が問題になる可能性がありますか?avdで何か間違ったことをしましたか?logcat からより有用な情報を取得するにはどうすればよいですか?
ソリューションビルド パスに slf4j を含めていませんでした。:) したがって、この問題を抱えている他の人は、ここから jar をダウンロードしてください: http://www.slf4j.org/android/ そして、osmdroid.jar に対して行ったのと同じ方法でビルド パスに含めます (つまり.プロジェクトに lib フォルダーを作成し、そこに jar を配置します)
android - マップの onDragListener を設定しますか?
私は osmdroid マップを使用しており、ユーザーがこのようにマップをドラッグしたときにリスナーを設定しようとしています。
現在、すべて正常に動作していますが、このコードをプログラムに入れると、エラーが発生して終了します。
これは、ユーザーがマップ内を移動するたびに通知を受け取りたいためです。ユーザーがマップを移動する場所を確認できるようにしたいので、getX と getY を監視しています。これは、マップが設定した範囲を超えた場合にマップの移動を停止できるためです。
これはこれを行う正しい方法ですか?
android - osmdroid-android-3.0.7 での実行時にリソース アイコンにアクセスできない
osmdroid-android-3.0.7 ライブラリを使用して、マップにいくつかのマーカーを表示する単純なマップ アクティビティを開始しようとしています。コードは古いバージョン (1.10) で動作しました。次のエラーが表示されます: 02-03 15:14:30.574: E/AndroidRuntime(10277): 原因: java.lang.IllegalArgumentException: リソースが見つかりません: marker_default.png
jar ファイルを解凍すると、トップ レベルのディレクトリにアイコンのリストが表示され、そのうちの 1 つは実際には marker_default.png です。これはコードのスニペットです:
シンプルなオーバーレイを使用しようとしたため、マーカーにアイコンを設定しなかった場合、person.png を参照することを除いて同じエラーが発生しました (そのアイコンは、解凍された jar ファイルにもあります)。プロジェクトのプロパティを介してjarファイルを追加しましたが、APIに問題なくアクセスできます。
アイコンにアクセスできないのはなぜですか?
ところで、アイコンをプロジェクトにコピーしようとしましたが、同じエラーが発生しました。
ありがとう、アニア
android - Androidカスタムタイルマップ
私は、建物のカスタムタイルマップを表示し、建物内のオブジェクトとして最大数百の「ポイント」をプロットする必要があるプロジェクトに取り組んでいます。すべて1つ以上のモバイルプラットフォーム(Androidから開始)で実行できます。
この問題に取り組むために私が考えた2つの方法がありました。1つは、osmdroidまたはmapsforgeを使用して、ズーム可能なタイルマップを表示することでした。ただし、これに関して私が抱えていた問題の1つは、単一の画像を正しいタイル形式に自動的に分割するソフトウェアを見つけることができなかったことです。MapTilerは、Y軸タイルがすべて逆さまになっていることを除いて、かなりうまく機能しています。
2つ目は、画像全体を画像ビューとして表示し、画像ビューをスクロールしながら地図上に関心のあるポイントを表示するコードを記述します。ただし、画像ビューにすでに表示されている画像の上に、未定義の量の画像を描画する方法がよくわかりません。
誰かが何かアイデアを持っていますか、それとも彼らは私を正しい方向に向けることができるでしょうか?
android - OSMDroid PathOverlay の描画が高いズーム レベルで破損する
OSMdroid を使用してマッピング アプリケーションを実装しています。
最大 22 のズーム レベルを許可するタイル ソースを使用するカスタム MapTileProvider を実装しました。
デフォルトの MAPNIK プロバイダーは、レベル 18 までのズームのみを許可します。
問題は、ズーム レベル 19 までは PathOverlay インスタンスが完全に描画されますが、ズーム レベル 20 ~ 22 では適切に描画されないことです。誰かがパスの長さの 90% 以上を消しゴムでこすったように見えます (下のスクリーンショットを参照)。
PathOverlay の draw() メソッドを実行したところ、正しく計算されているようです(中間点は ZoomLevel 22 で正しく表示され、XY 投影は 22-ZoomLevel で除算されて現在の画面座標が取得されます)。
問題の内容とその解決方法について、誰かが洞察を提供できますか?
Cloudmade の小さなタイルを使用して MapView を呼び出すと、同じことが起こります。これは、レベル 20 までズームアップでき、「組み込み」の osmDroid タイル プロバイダー クラスです。
したがって、問題はタイル ソースまたはプロバイダーにあるようには見えませんが、キャンバスの描画方法に問題があるようです。これを解決する方法についてのアイデアはありますか?
zoomLevel 19 では、パスをうまく見ることができます。

しかし、次のズーム レベルでの同じパスは次のとおりです。

android - osmdroid を使用したオーバーレイ アイテムのタップ時のカスタム情報バブル
新しい Android プロジェクトで osmdroid を使用しています (オフライン マップを使用できるようにしたいため) が、オーバーレイ アイテムに割り当てられた情報バブルのルック アンド フィールをカスタマイズするのに多くの問題が発生します。
現在、ItemizedOverlayWithFocusオーバーレイを使用してアイテムを表示しています。そのコードを見て、全体がメソッドに描画されていることに気付いたonDrawFinishedので、このメソッドをオーバーライドする独自のカスタム オーバーレイを作成しようとしましたが、結果を得るのがかなり困難です。私が手に入れたいのは、次のようなものです:

どのようにして、プロジェクトにカスタム情報バブルを作成しましたか?
Google の MapView ( Jeff Gilfelt の MapView Balloonsなど) にそのようなものを実装するクラスがいくつか見つかりましたが、osmdroid には何もありませんでした。
android - OSMDroidオーバーレイ複数の静的および1つの動的
私のアプリケーションでは、マップ上にすでにいくつかの静的オーバーレイがあり、GPS座標が変更されたときにその場所を変更する動的オーバーレイが1つあります。
私の問題は、GPS座標が変更されたときに、動的オーバーレイをクリアして新しいオーバーレイを作成する必要があることですが、それを行うと、次を使用してすべてのオーバーレイがクリアされます。
だから、私はそれを行うためのより良い方法を見つけようとしています。
すべてのオーバーレイをクリアしてから、マップ上に再度配置します(メモリを消費します)。または、特定のオーバーレイをクリアできますか?
ありがとう
編集:
これは動的マーカーです。
これは、静的マーカーを配置する関数です。
android - MapView onTouchListener が一度だけ起動されるのはなぜですか?
重複の可能性:
MapView の OnTouch は初回のみ起動します
ユーザーがマップに対して行ったすべてのタッチを検出したいので、MapView のインスタンスのリスナーを登録しました。ただし、このリスナーは 1 回しか呼び出されません。その後、再度機能させるには、アプリケーションを閉じる必要があります。私はOsmDroidを使用しています。
android - 特定の場所がマップの境界内にあるかどうかを確認する必要がある
私はosmdroid MapViewを使用しています。ユーザーの場所がマップの境界内にあるかどうかを確認する必要があります (ズーム レベルによって異なります)。
MapView.getBoundingBox().contain(location). を使用しようとしましたが、getBoundingBox() が可視境界を返すようです。
元のマップ境界を取得する方法はありますか (ズーム レベルによって異なります)。
ありがとう