2011-05-17 16 views
10

Quiero colocar un símbolo de un mapa. P.ej.Openlayers: Características vectoriales en lugar de marcadores

Map Example

OpenLayers Hasta ahora he utilizado con OpenLayers.Layer.Markers. El código se ve así:

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

Esto funciona como excepción y muestra el mapa de arriba. Pero no puedo conseguirlo para trabajar con vectores sustitución de las últimas 3 líneas con:

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

¿Hay alguna magia especial que se necesita para usar OpenLayers.Feature.Vector?

Respuesta

19

OpenLayers.Geometry.Point recibe dos coordenadas en su constructor y no un 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); 
Cuestiones relacionadas