Openlayers:矢量要素而非标记

11

我想在地图上放置一个符号。例如:

地图示例

到目前为止,我使用了OpenLayers和OpenLayers.Layer.Markers。 代码如下:

    map = new OpenLayers.Map('map');
    layer = new OpenLayers.Layer.OSM( "Simple OSM Map");
    map.addLayer(layer);
    map.setCenter(
        new OpenLayers.LonLat({{ location.lon }}, {{ location.lat }}).transform(
            new OpenLayers.Projection("EPSG:4326"),
            map.getProjectionObject()
        ), 15);

   var lonLat = new OpenLayers.LonLat({{ location.lon }}, {{ location.lat }})
             .transform(
               new OpenLayers.Projection("EPSG:4326"), // transform from WGS 1984
               map.getProjectionObject() // to Spherical Mercator Projection
             );
   var markers = new OpenLayers.Layer.Markers( "Markers" );
   map.addLayer(markers);
   markers.addMarker(new OpenLayers.Marker(lonLat));

这段代码正常运行并显示地图。但是我无法使用向量替换最后三行来使其工作:

     vectors = new OpenLayers.Layer.Vector("Vector Layer");
     vectors.addFeatures([new OpenLayers.Feature.Vector(new OpenLayers.Geometry.Point(lonLat))]);
     map.addLayer(vectors);

使用OpenLayers.Feature.Vector是否需要特殊魔法?

1个回答

21

OpenLayers.Geometry.Point 的构造函数需要两个坐标参数,而不是一个 OpenLayers.LonLat 参数。

vectors = new OpenLayers.Layer.Vector("Vector Layer");
point = new OpenLayers.Geometry.Point(lonLat.lon, lonLat.lat);
vectors.addFeatures([new OpenLayers.Feature.Vector(point)]);
map.addLayer(vectors);

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接