2011-05-17 87 views
10

我想在地图上放置一个符号。例如。Openlayers:Vector Features而不是标记

Map Example

到目前为止,我已经使用的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)); 

这可以作为例外,并显示上图。但我不能让它使用向量与将最后3行工作:

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

是否有使用OpenLayers.Feature.Vector需要特殊的魔力?

回答

19

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); 
相关问题