2010-10-23 34 views
18

Tôi có trong các vĩ độ kinh độ cơ sở dữ liệu của tôi từ các đa giác do người dùng xác định. Câu hỏi của tôi là: làm cách nào để tạo lại và hiển thị chúng trên bản đồ ngay bây giờ? Điều này khá dễ làm với API Google Maps, nhưng tôi không thể tìm thấy bất kỳ tài liệu hoặc ví dụ nào về cách thực hiện điều này với OpenLayers. Có ai có kinh nghiệm làm việc này không?OpenLayers - làm thế nào để vẽ một Đa giác từ các điểm LonLat hiện có?

Trả lời

34

Sau rất nhiều thử nghiệm, tôi phát hiện ra làm thế nào để làm điều đó:

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

Không chắc có bao nhiêu điều đã được cập nhật kể từ, nhưng không phải là dòng: 'site_points.push (site_points [0]); 'không cần thiết cho' LinearRing', vì chúng tự động đóng lại? – dbmikus

+0

bạn có thể vui lòng chia sẻ cách bạn đạt được trên http://jsfiddle.net/. điều đó sẽ giúp ích rất nhiều. cảm ơn – Profstyle

Các vấn đề liên quan