2

友人と一緒に、ここ数か月で学んだことをテストするための楽しい小さなサイド プロジェクトを開始しました。ユーザーからの入力 (出発地 + 目的の場所) を受け取り、抽出した Open Street Maps データに基づいてルートを描画する単純なマップ ナビゲーション プログラムを作成することにしました。最初の試行では、ユーザーが車に乗っており、Java で k-shortest パスを実装して、それらの間のルートを見つけることを想定しています。また、短いアルゴリズムを使用して、ユーザーの現在および目的の場所に最も近いノードを見つけました。これは完全ではありませんが、達成したいレベルではうまく機能します。すべてのテスト マップに渡されたルートは常に有効であり、概して高速であり、数倍最適です。結果は Nodes(id,ref,long,lat) の ArrayList に返されます。

ここで必要なのは、開始ノード、終了ノード、および見つかったすべてのルーティング ノードを Web ページのマップ ビューに入力できるようにすることです。私たちの一般的な考えは、ユーザーが map で 2 つのポイントをクリックできるようになり、javal クラスが返したノードウェイに沿って赤い線が引かれるというものです。これをどのように提案しますか?私は js を使用して、ユーザーの希望するマップとズーム レベル、および中心点を中心に配置することに成功しましたが、ライブ ラインの描画はとらえどころのないものでした。これは実際にはプロジェクト全体のアイデアに反するため、解決策は求めませんが、どのリソースを調べるかについては、いくつかの指針を実際に使用できます。

4

2 に答える 2

0

OpenLayers.Geometry.LineString()を使用して Open Street Map に線を追加する方法の例を次に示します。私はこれをテストしましたが、問題なく動作します。

  locations = [[-77.3861, 38.9695], [-122.1781, 37.459], [-122.1781, 37.459], [-122.1781, 37.459], [-122.1781, 37.459], [-122.1826, 37.3762], [-122.1781, 37.459], [-122.1826, 37.3762], [-122.1826, 37.3762], [-122.1826, 37.3762]];
  var lines = new OpenLayers.Layer.Vector("Lines Overlay");
  var coordinates = [];
  for (var i = 0; i < locations.length; i++) {
    coordinates.push(new OpenLayers.Geometry.Point(locations[i][0], locations[i][1]).transform(fromProjection, toProjection));
  }
  var feature = new OpenLayers.Feature.Vector(new OpenLayers.Geometry.LineString(coordinates));
  lines.addFeatures(feature);
  map.addLayer(lines);

追加の API ヘルプは http://dev.openlayers.org/docs/files/OpenLayers/Geometry/LineString-js.htmlにあります。

于 2015-08-23T02:04:55.320 に答える