如何在OpenLayers中沿道路绘制直线
How to draw a line following the road in OpenLayers
在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]);
}
通常OpenLayers只显示光栅瓷砖,但无法从中提取道路几何信息。为此,您需要原始数据或其他预处理数据。OpenLayers和传单都能够显示GPX文件。因此,一旦你有了一个GPX文件,其他一切都会变得简单起来。
不幸的是,您没有告诉我们您是想沿着它走一条特定的道路(基于名称/地址?还是基于坐标?),或者您是想显示沿着几条道路的路线还是完全不同的东西。
为了从OpenStreetMap中检索原始地理信息,有一个官方的API,还有一个Overpass API,它通常要快得多,可以指定相当复杂的查询。但是显示这样的原始数据首先需要大量的预处理。
如果要显示路由,则可以为OSM选择一个可用的在线路由器,例如OSRM。其中许多提供了计算路线的GPX导出,然后可以与OpenLayers一起使用。
还有一些选择,但在不知道你实际想做什么的情况下在这里展示它们会浪费时间。
相关文章:
- D3在一个调用中绘制不同的SVG形状,没有可见性
- 有没有一个javascript图形绘制库可以进行气球树布局
- 使用相同的数据集绘制各种符号
- 使用onclick绘制SVG路径
- 在谷歌地图上绘制位置数据库
- 用chart.js绘制条形图
- “可绘制地图”设置地图选项“纬度-经度”
- 多维数据集网格未在指定的分区中绘制
- 使用谷歌图表在x轴上绘制日期
- 使用fabric.js从矩形区域获取对象,并将该区域绘制到画布上
- 如何在React Native中绘制图形
- 画布中绘制的矩形区域的弹出工具提示
- 如何在OpenLayers中获取动态绘制的多边形的坐标
- 画布:逐像素绘制图像并请求动画帧计时
- D3从嵌套的JSON中绘制第二个圆环图
- 如何用d3.js绘制折线图
- 在WebGL中绘制多个二维图像
- JSXGraph:如何绘制带有箭头和无点标记的矢量
- 如何在OpenLayers中沿道路绘制直线
- 从 GPS 捕捉到道路的 GEO 位置绘制路径