2010-10-23 5 views
18

J'ai dans ma base de données longitude-latitude verticies de polygones définis par l'utilisateur. Mes questions sont: comment puis-je les recréer et les afficher sur une carte maintenant? C'est assez facile à faire avec l'API Google Maps, mais je ne trouve pas de documentation ou d'exemples sur la façon de le faire avec OpenLayers. Est-ce que quelqu'un a déjà eu une expérience?OpenLayers - comment dessiner un polygone à partir de points lonLat existants?

Répondre

34

Après beaucoup d'expérimentation, j'ai découvert comment le faire:

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

Je ne sais pas à quel point les choses ont été mises à jour depuis, mais il est pas la ligne: 'site_points.push (site_points [0]); 'n'est pas nécessaire pour' LinearRing', puisqu'ils se ferment automatiquement? – dbmikus

+0

pouvez-vous s'il vous plaît partager comment vous avez terminé sur http://jsfiddle.net/. cela aidera beaucoup. Merci – Profstyle

Questions connexes