2011-05-17 42 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); 
相關問題