在OSM基础层上,我绘制了一条跟随3个点的线,其中包含一个点和对象/方法的数组OpenLayers.Geometry.LineString
现在,我希望这条路可以走这条路。在互联网上花了几个小时,无法找到解决方案。有这个对象吗?我是否必须首先从瓷砖中获取一些信息?
请问一些帮助吗?
下面是我如何绘制直线
function init() {
var epsg4326 = new OpenLayers.Projection("EPSG:4326");
var map = new OpenLayers.Map('map');
var osmLayer = new OpenLayers.Layer.OSM("OSM");
map.addLayer(osmLayer);
var center = new OpenLayers.LonLat(-71.6, -33.7).transform(epsg4326,map.getProjectionObject());
map.setCenter(center,4);
var points = new Array(
new OpenLayers.Geometry.Point(-71.26,-32.47),
new OpenLayers.Geometry.Point(-71.30,-32.97),
new OpenLayers.Geometry.Point(-70.81,-32.89)
);
var myLine = new OpenLayers.Geometry.LineString(points).transform(epsg4326, map.getProjectionObject());
var myLineStyle = {strokeColor:"#0500bd", strokeWidth:3};
var myFeature = new OpenLayers.Feature.Vector(myLine, {}, myLineStyle);
var myVector = new OpenLayers.Layer.Vector("line test");
myVector.addFeatures([myFeature]);
map.addLayers([myVector]);
}
答案 0 :(得分:5)
通常,OpenLayers只显示栅格图块,但您无法从中提取道路几何图形信息。您需要原始数据或其他预处理数据。 OpenLayers和Leaflet都能够显示GPX文件。所以一旦你得到一个GPX文件,其他一切都会变得容易。
不幸的是,您没有告诉我们您是想跟踪特定道路(基于名称/地址?还是基于坐标?),或者是否要沿着几条道路或完全不同的道路显示路线。 / p>
为了从OpenStreetMap中检索原始地理信息,有一个官方API,而Overpass API通常要快得多,并允许指定complex queries。但是显示这样的原始数据需要先进行大量的预处理。
如果您想显示路线,则可以为OSM选择一个可用的online routers,例如OSRM。其中许多提供计算出的路线的GPX导出,然后您可以使用OpenLayers。
还有一些选择,但在不知道你实际想要做什么的情况下在这里展示它们会浪费时间。