2010-10-23 25 views
18

Tengo en mi base de datos verticidades de longitud-latitud de polígonos definidos por el usuario. Mi pregunta es: ¿cómo puedo recrearlos y mostrarlos en un mapa ahora? Esto es bastante fácil de hacer con la API de Google Maps, pero no puedo encontrar ninguna documentación o ejemplos sobre cómo hacer esto con OpenLayers. Alguien ha tenido alguna experiencia haciendo esto?OpenLayers: ¿cómo dibujo un polígono de los puntos LonLat existentes?

Respuesta

34

Después de mucha experimentación, descubrí cómo hacerlo:

var sitePoints = []; 
var siteStyle = { 
    // style_definition 
}; 

var epsg4326 = new OpenLayers.Projection("EPSG:4326"); 
for (var i in coordinates) { 
    var coord = coordinates[i]; 
    var point = new OpenLayers.Geometry.Point(coord.lng, coord.lat); 
    // transform from WGS 1984 to Spherical Mercator 
    point.transform(epsg4326, map.getProjectionObject()); 
    sitePoints.push(point); 
} 
sitePoints.push(sitePoints[0]); 

var linearRing = new OpenLayers.Geometry.LinearRing(sitePoints); 
var geometry = new OpenLayers.Geometry.Polygon([linearRing]); 
var polygonFeature = new OpenLayers.Feature.Vector(geometry, null, siteStyle); 
vectors.addFeatures([polygonFeature]); 
+3

No está seguro de la cantidad de cosas que se han actualizado desde entonces, pero no es la línea: 'site_points.push (site_points [0]); 'no es necesario para' LinearRing', ya que se cierran automáticamente? – dbmikus

+0

puede por favor compartir cómo logró en http://jsfiddle.net/. eso ayudara mucho. Gracias – Profstyle

Cuestiones relacionadas