Openlayers 如何在osm中绘制两点之间的直线

Openlayers 如何在osm中绘制两点之间的直线,openlayers,openstreetmap,Openlayers,Openstreetmap,我想在osm地图的两点之间画一条线 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(

我想在osm地图的两点之间画一条线

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]);

我尝试了这段代码,但它不起作用,请帮助我。

绘制linestring的代码是正确的。由于您并没有发布完整的代码和错误的确切描述,所以只有两个猜测。您的地图可能是900913投影,坐标是WGS。转换它们:

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

start_point.transform(
    new OpenLayers.Projection("EPSG:4326"),
    new OpenLayers.Projection("EPSG:900913")
); 
end_point.transform(
    new OpenLayers.Projection("EPSG:4326"),
    new OpenLayers.Projection("EPSG:900913")
); 
此外,您可能需要调整视图:

map.zoomToMaxExtent();

绘制线条字符串的代码正确。由于您并没有发布完整的代码和错误的确切描述,所以只有两个猜测。您的地图可能是900913投影,坐标是WGS。转换它们:

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

start_point.transform(
    new OpenLayers.Projection("EPSG:4326"),
    new OpenLayers.Projection("EPSG:900913")
); 
end_point.transform(
    new OpenLayers.Projection("EPSG:4326"),
    new OpenLayers.Projection("EPSG:900913")
); 
此外,您可能需要调整视图:

map.zoomToMaxExtent();