問題タブ [openstreetmap]
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.
openlayers - OpenLayers.Layer.OSM.Mapnikをランダムに取得することはコンストラクターではありません
ページ上のリンクをユーザーがクリックするとロードする小さなポップアップウィンドウがあります。しかし、約半分の時間で、firebugのconsole.logに「OpenLayers.Layer.OSM.Mapnikはコンストラクターではありません」と表示されます。ポップアップ(jqueryuiダイアログ)を閉じてからリンクをもう一度クリックすると、エラーが発生しない可能性があります。しかし、閉じてからもう一度開くと、エラーが再び発生します。とても不思議です。
ページを完全に更新すると、最初のクリックでエラーが発生しますが、閉じるとマップが表示されます。
私が見逃している小さなウィンドウに地図をロードする秘訣はありますか?別のページの地図のフルスクリーンバージョンでエラーが発生しません...
マップをロードするコードは次のとおりです。
android - ユーザーがMapviewで行けるエリアを制限する
mapview のカスタマイズ バージョン (OSMDroid バージョン) を使用しています。その中でカスタム タイルを使用していますが、カスタム タイルがある領域のみをユーザーが表示できるようにしたいと考えています。境界の緯度経度を設定して、マップをパンするときにこれらの境界を超えないようにする方法はありますか?
google-maps - Google IOの会議マップのようなもののローカルに保存されたバージョン?
Google IO 2010の美しい「インタラクティブ会議マップ」がここにあります: http ://www.google.com/events/io/2010/map/#level1
オーバーレイと便利なレイアウトに注目してください。モバイルデバイスでもうまく機能します。
同じことをしたいのですが、GMapがパンまたはズームされるたびに新しいタイルをロードする代わりに、すべてのタイルを事前にキャッシュしたいと思います。これは、データ接続が不要であることも意味します。
タイルを事前にキャッシュすることはGMapsの利用規約に違反していると誰かが言ったが、確実に見つけることができなかった。それが彼らの利用規約に違反している場合、誰かが見つけた別の方法(別のサービス)があるのではないかと思います。たとえば、OpenStreetMapを使用します。
android - osmdroid-android-3.0.3.jar のオーバーレイ
私は以前、osmdroid-android-3.0.1.jar を使用して OpenStreetMaps をアプリケーションに組み込むことができましたが、私の質問への回答の大きな助けになりました
Osmdroid への Google マップ アプリの移植 - オーバーレイの問題
3.0.3 jar を使用するようにアップグレードしましたが、オーバーレイを表示できません。
私のアプリは、Google マップから OSM に表示を切り替えて、どちらかの上に線とテキストで構成される同じオーバーレイを表示できます。クラスは似ていますが、完全に同一のメソッドを持っていないか、少なくとも 3.0.1 では持っていなかったので、別の方法では、今のところそれぞれの実行を独自のアクティビティで表示します。(最終的には、Osmdroid ラッパー jar を使用してそれらを 1 つのアクティビティに結合し、重複するコードを減らしたいと考えていますが、それは後日の質問です) 今のところ、現在と同じ機能を取得したいと考えています。新しい 3.0.3 バージョンを使用して 3.0.1 jar を非推奨にしました。
新しいjarを使用しても、マップビューは問題なく表示されますが、オーバーレイは消えています。MapOverlay extends org.osmdroid.views.overlay.Overlayクラスで 3.0.1 の onDraw() メソッドが (Google のように) draw() に置き換えられたため、コードにいくつかの変更を加える必要がありました。
以前の onDraw() (現在は描画) メソッドのすべてのコードは、上記の質問への回答からそのままコピーされています。ワールドサイズ、バウンディング ボックス、および説明されている変換の概念を完全には理解していないことを告白しますが、問題なく動作しました。 .
その方法に気がついた
は非推奨になり、tileZoom を削除する必要がありました。
コンパイルできるようにします。
draw() メソッドのコードに到達すると、オーバーレイを描画するために必要なすべてのデータがまだ存在し、正しいことをデバッガーで確認できます。描画は canvas.drawLine(....) や canvas.drawText(....) などの線で行われます。関数 (ブール値の影) に余分なパラメーターをまったく使用していません。
私の redrawOverlay() メソッドは次のようになります。
(Google listofOverlays.clear() は、osmdroid 3.0.1 がマップ自体として要素 0 を持っていたため、使用しないでください - したがって、remove(1))
既存の 3.0.1 コードを 3.0.3 で動作するように変更するにはどうすればよいのでしょうか? の作者の 1 人がこの質問を読んでくれることを願っています。
アップデート
上記の質問への回答で提案されているように、ミニマップを全体的に適応させることにより、オーバーレイを左上から右下に描画する draw() メソッドは次のようになります。
これは正常に動作します
api - Google Maps、Bing Maps、OpenStreetMaps、MapQuestの制限
一部のオンラインマップサービス(Googleマップ、Bingマップ、OpenStreetMaps、Mapquestなど)のオンライン使用条件を読んでいると、非常に混乱します...
ウェブサイトでGoogleまたはBingMapsを非営利目的または営利目的で使用する方法はありますか?自分のサイトにいくつかの興味のあるポイントが挿入された地図を見たい場合、使用やリクエストの制限なしに無料で使用できるApiの種類は何ですか?
GoogleまたはBingの無料バージョンでは、一部の広告がマップ内に表示されることがあり、GoogleまたはBingとは異なる別のプロバイダーの広告をWebページに挿入できないことを読みました。それは本当です?
OpenStreetMaps(オープンソースのマップデータベース)またはパートナーのMapQuestを使用したい場合、毎日のリクエストやマップへの広告の表示、または排他的なバナーキャンペーンのポリシーに制限はありませんか?
しかし、最後に、このマップを使用してポータルを構築しようとし、将来的にいくつかの広告の挿入と小さな会社の作成を計画したい場合、私は商用または非商用の使用を行っています(現在および将来)??
iphone - バンプ + OpenStreetMap エラー
OpenStreetMap lib と Bump lib の使用に問題があります。
重大なエラーが発生しました -
database - openstreetmap をグラフとして保存するには、どの DBMS を使用すればよいですか?
バックグラウンド:
次のデータをデータベースに保存する必要があります。
タグ付きのosmノード;
重み付きの osm エッジ (.osm ファイルの「way」から抽出された 2 つのノード間のエッジ)。
同じ 'way' セットにあるエッジを形成するノードは、これらのウェイと同じタグを持つ必要があります。つまり、ハイウェイであるノードの 'way' セット内のすべてのノードは 'highway' タグを持つ必要があります。
さまざまなフィルターに基づいてグラフを簡単に生成するには、この構造が必要です。たとえば、高速道路であるノードとエッジのみで構成されるグラフ、または「歩道」グラフなどです。
問題:
以前に空間インデックスについて聞いたことがなかったので、.osm ファイルを MySQL データベースに解析しました。
- 「ノード」テーブルへのすべてのノード(それぞれの座標列を含む)-OK、私の場合は約9,000,000行:
(INSERT INTO nodes VALUES [pseudocode]node_id,lat,lon[/pseudocode]
;
- 「エッジ」テーブルへのすべての方法 (通常、1 つの方法でいくつかのエッジが作成されます) - OK、約 9,000,000 行も同様に:
(INSERT INTO edges VALUES [pseudocode]edge_id,from_node_id,to_node_id[/pseudocode]
;
- ノードにタグを追加し、エッジの重みを計算する -問題:
問題のあるphpスクリプトは次のとおりです。
Nohup は、55 ~ 60 秒ごとに 'echo "$i\n"' の出力を表示します (私の場合のように、'edges' テーブルのサイズが 9,000,000 行を超える場合、完了するまでに 17 年以上かかることがあります)。
Htop は、CPU の 40 ~ 60% を使用する /usr/bin/mysqld プロセスを示しています。
エッジの重み (距離) を計算しようとするスクリプトにも同じ問題が存在します (すべてのエッジを選択し、エッジを取得し、「ノード」テーブルからこのエッジの 2 つのノードを選択し、距離を計算し、エッジ テーブル)。
質問:
この SQL 更新を高速化するにはどうすればよいですか? MySQL の構成設定を微調整する必要がありますか? または、PostGIS 拡張機能を備えた PostgreSQL を使用する必要がありますか? データに別の構造を使用する必要がありますか? それとも、何らかの形で空間インデックスを利用する必要がありますか?
mysql - .osm ファイルからデータベースに「道路」グラフを作成する方法
必要な結果:
「エッジ」と「ノード」の 2 つのテーブルを持つデータベース。特定のエリア (都市など) 内のすべての走行可能な道路 (高速道路) を表すグラフを生成するために使用できます。データセットは .osm ファイルから解析されます。
バックグラウンド:
2 つのテーブル (ノードとエッジ) を持つデータベースを作成する 2 回目の試行を行います。これを使用して、さまざまな最短経路の計算を実行できます。
最初に、さまざまなデータをデータベースに手動で抽出しようとしました (php スクリプト):
- .osm ファイルのすべてのノードを「ノード」テーブルに解析します
- すべてのエッジを「エッジ」テーブルに解析します (つまり、ウェイを解析し、それらからエッジ (開始ノードと宛先ノードで構成される) を生成し、エッジにタグを同時に追加します。
- ブラックリストに登録されたタグ (高速道路ではない) を持つすべてのエッジをエッジ テーブルから削除します。
- エッジ テーブルに存在しないすべてのノードをノード テーブルから削除します。
問題は、このシーケンスは非常に信頼性が低く、数千のノードなどの小さなデータセットでのみ「まあまあ」機能するが、数百万のノードでは機能しないことです。
問題:
数百万のノードとエッジで構成されるデータベースでは、道路の抽出 (特定のタグ フィルターに基づいてエッジを生成する場合) が非常に遅くなります。
考えられる解決策:
今回やること:
- PostgreSQL rdbms をセットアップします。
- 完全なノード、ウェイ、およびリレーション テーブルを取得するために、OSM 既製のスクリプトを使用して .osm ファイルを解析します。
- 特定のタグ (例: 'highway') を持つすべてのエッジを、ways テーブルから新しい 'edges' テーブルに抽出します。
- エッジ テーブルに存在するすべてのノードを新しい graph_nodes テーブルに抽出します。
- その後、おそらく「edges」テーブルと「graph_nodes」テーブルから「道路」グラフを生成できます。
質問:
.osm ファイルをデータベースに正しく解析して、結果として「エッジ」テーブルと「ノード」テーブルを作成するにはどうすればよいですか?
.osm から走行可能な道路のみをデータベースに抽出するにはどうすればよいですか?
どうすれば高速に実行できますか (数週間ではなく、何百万ものノードとエッジ テーブルに対して実行されるスクリプトの時間数を意味します)。
関係を考慮する必要がありますか?
はいの場合、どうすればよいですか?
java - JxMapKit ウェイポイント クリック イベント
こんにちは、jxmapkit のウェイポイントのクリック イベントはありますか? ウェイポイントをクリックできるようにする方法を見つけようとしているので、ウェイポイントをクリックするとフレームが開きます。
ありがとう
java - jxmapkitクリックイベントが誤った緯度経度を返します
ウェイポイントの座標がデータベース内に保存されているフレームに、openstreetmapsのウェイポイントを含むマップを表示するためにJXmapkitを使用しています。場所がクリックされると、アプリケーションは、内部フレームが開くよりもtrueの場合、エリアの座標がウェイポイントの周囲のエリア内にあるかどうかを確認します。問題は、クリックされた場所の座標が常に誤った例で返されることです。正しい座標(35.9097,14.4259)は(85.05012、-179.96198)として返されます。違いを追加しようとしましたが、同じ場所をクリックするたびに座標が常に異なるため、座標間の正確な違いを判断できないため、機能しません。私は何かを逃していますか、それとも何か間違ったことをしていますか?