使用OpenLayers在两点之间绘制线条

Rin*_*eri 13 point line openlayers

我有两个点,lolLat为0,10和30,0

现在在此处绘制标记我使用此变换同时为其生成标记

lonLat.transform(
                 new OpenLayers.Projection("EPSG:4326"), // transform from WGS 1984
                 map.getProjectionObject() // to Spherical Mercator Projection
             )
Run Code Online (Sandbox Code Playgroud)

我怎样才能在它们之间绘制线条有没有办法在openlayers中做到这一点,我已经尝试用矢量图层中的线串做它但它似乎对我不起作用.

drn*_*gis 20

例如:

map = new OpenLayers.Map();

var start_point = new OpenLayers.Geometry.Point(0,10);
var end_point = new OpenLayers.Geometry.Point(30,0);

var vector = new OpenLayers.Layer.Vector();
vector.addFeatures([new OpenLayers.Feature.Vector(new OpenLayers.Geometry.LineString([start_point, end_point]))]);
map.addLayers([vector]);
Run Code Online (Sandbox Code Playgroud)

现场演示

  • 你能再看一下吗?看上去一片空白。 (2认同)

Pra*_*nka 19

在OpenLayers版本3.3中,您可以这样做

var points = [ [-89.8802, 32.5804], [-95.04286, 46.9235] ];

for (var i = 0; i < points.length; i++) {
    points[i] = ol.proj.transform(points[i], 'EPSG:4326', 'EPSG:3857');
}

var featureLine = new ol.Feature({
    geometry: new ol.geom.LineString(points)
});

var vectorLine = new ol.source.Vector({});
vectorLine.addFeature(featureLine);

var vectorLineLayer = new ol.layer.Vector({
    source: vectorLine,
    style: new ol.style.Style({
        fill: new ol.style.Fill({ color: '#00FF00', weight: 4 }),
        stroke: new ol.style.Stroke({ color: '#00FF00', width: 2 })
    })
});
Run Code Online (Sandbox Code Playgroud)

然后添加图层到地图

map.addLayer(vectorLineLayer);
Run Code Online (Sandbox Code Playgroud)

  • 可以确认这是有效的。谢谢。使用 Leaflet,你只需要`L.polyline(array).addTo(map)`。这些家伙如何使基本功能变得如此复杂,这超出了我的理解 (2认同)