Routing 开放式街道地图-基于给定节点绘制直线

Routing 开放式街道地图-基于给定节点绘制直线,routing,drawing,openstreetmap,Routing,Drawing,Openstreetmap,和一个朋友一起,我们开始了一个有趣的小项目来测试我们在过去几个月里学到的东西。我们决定我们将做一个简单的地图导航程序,从用户那里获取输入(起始地点+所需位置),并根据我们提取的开放街道地图数据绘制路线。在我们的第一次尝试中,我们假设用户在一辆汽车中,并用Java实现了一个k-最短路径来查找他们之间的路径。我还使用了一个简短的算法来查找距离用户当前位置和所需位置最近的节点,这一算法虽然不完美,但对于我们希望达到的级别来说效果很好。它工作得非常好,给所有测试地图的路线都是有效的,而且通常速度很快,甚

和一个朋友一起,我们开始了一个有趣的小项目来测试我们在过去几个月里学到的东西。我们决定我们将做一个简单的地图导航程序,从用户那里获取输入(起始地点+所需位置),并根据我们提取的开放街道地图数据绘制路线。在我们的第一次尝试中,我们假设用户在一辆汽车中,并用Java实现了一个k-最短路径来查找他们之间的路径。我还使用了一个简短的算法来查找距离用户当前位置和所需位置最近的节点,这一算法虽然不完美,但对于我们希望达到的级别来说效果很好。它工作得非常好,给所有测试地图的路线都是有效的,而且通常速度很快,甚至有几次是最优的。结果将返回到节点的ArrayList(id、ref、long、lat)


我们现在想要的是能够在网页的地图视图中输入起始节点、结束节点和所有找到的路由节点。我们的总体想法是,用户可以单击地图上的两个点,并沿着javal类返回的节点绘制一条红线。你建议我们怎么做?我已经成功地使用js来居中用户想要的地图和缩放级别,以及一个中心点,但是实线绘制已经被证明是难以捉摸的。我不要求解决方案,因为这实际上违背了整个项目的想法,但我真的可以使用一些指针来指示我应该查看哪些资源。

您可以查看其中的一个,以便了解如何在网页中绘制路线。或者,您可以生成一个GPX文件,并使用或或类似的库在地图上绘制它。

下面是一个如何使用OpenLayers.Geometry.LineString()将线添加到打开的街道地图的示例。我已经测试过了,效果不错

  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);
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.1826,37.3762]、-122.1826,37.3762]、-122.1826,37.3762];
var lines=新的OpenLayers.Layer.Vector(“线覆盖”);
变量坐标=[];
对于(变量i=0;i
其他API帮助位于:

谢谢你的回答,我会在一小时内检查它。谢谢你一千次!!!参加了一个快速速成GPX课程,并成功地不仅完成了这个问题,而且完成了我回答后的所有任务!我将返回给代表一旦我+15,并再次感谢您最及时的回答!