2010-10-23 14 views
18

Ho nel mio database vertici di longitudine-latitudine da poligoni definiti dall'utente. Le mie domande sono: come posso ricrearle e visualizzarle su una mappa ora? Questo è abbastanza facile da fare con l'API di Google Maps, ma non riesco a trovare alcuna documentazione o esempi su come farlo con OpenLayers. Qualcuno ha avuto qualche esperienza in questo?OpenLayers - come disegno un poligono dai punti lonLat esistenti?

risposta

34

Dopo un sacco di sperimentare, ho scoperto come si fa:

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

Non so quanto le cose sono state aggiornate dal momento, ma non è la linea: 'site_points.push (site_points [0] 'Non è necessario per' LinearRing', dato che si chiudono automaticamente da soli? – dbmikus

+0

puoi per favore condividere come hai realizzato su http://jsfiddle.net/. questo aiuterà molto. Grazie – Profstyle

Problemi correlati