2010-04-29 23 views
30

Tôi đã xem các ví dụ được trình bày here về cách vẽ đường nhưng các ví dụ chỉ hiển thị cách thực hiện bằng chuột, bằng cách nhấp.Vẽ một đường với một dòng trong OpenLayers bằng cách sử dụng JavaScript

Điều tôi muốn làm là vẽ đường theo cách thủ công bằng JavaScript được cung cấp danh sách vĩ độ và tọa độ Latitude.

Lý do tôi không thể làm việc với nguồn được cung cấp trong liên kết ở trên là vì họ chỉ gọi activate trên đối tượng địa lý, sau đó cho phép người dùng trỏ và nhấp vào bản đồ.

Có ai từng vẽ đường dẫn trên bản đồ OpenLayers theo chương trình không?

Điều tôi muốn làm chính xác là: http://openspace.ordnancesurvey.co.uk/openspace/example4.html, nhưng không sử dụng OpenSpace.

Trả lời

51

Bạn sẽ cần phải sử dụng các đối tượng LineString

Dưới đây là một ví dụ:

var lineLayer = new OpenLayers.Layer.Vector("Line Layer"); 

map.addLayer(lineLayer);      
map.addControl(new OpenLayers.Control.DrawFeature(lineLayer, OpenLayers.Handler.Path));          
var points = new Array(
    new OpenLayers.Geometry.Point(lon1, lat1), 
    new OpenLayers.Geometry.Point(lon2, lat2) 
); 

var line = new OpenLayers.Geometry.LineString(points); 

var style = { 
    strokeColor: '#0000ff', 
    strokeOpacity: 0.5, 
    strokeWidth: 5 
}; 

var lineFeature = new OpenLayers.Feature.Vector(line, null, style); 
lineLayer.addFeatures([lineFeature]); 

Giả sử map là đối tượng bản đồ của bạn và lonlat là những giá trị float.

+4

Tôi đã phải sử dụng 'OpenLayers.Geometry.Point mới (lon, lat) .transform (new OpenLayers.Projection (" EPSG: 4326 "), map.getProjectionObject());' thay vì chỉ 'new OpenLayers.Geometry.Point (lon1, lat1) 'như tôi đã có wsg84 tọa độ – yankee

+2

Ví dụ làm việc (bởi Mannaz + sửa đổi nhỏ) http://jsfiddle.net/4q7vx/25/ – aatdark

+1

Mẫu tốt. DrawFeature thực sự không cần thiết, dòng "map.addControl (.... DrawFeature ...);" có thể được bỏ qua. – dube

0

Tôi chưa bao giờ tự làm điều đó trước đây, nhưng tôi biết OpenSteetMap sẽ làm điều đó. Ví dụ:

http://www.openstreetmap.org/?way=23649627

Không có ý tưởng như thế nào khó khăn nó sẽ là làm việc thông qua mã của họ.

+0

Có, tôi đã xem ví dụ về OpenStreetMap, nhưng tôi đang cố gắng thực hiện điều này với OpenLayers chỉ –

+0

Ok. Xin lỗi không thể giúp bạn ở đó. – RoToRa

1

this page is a classic example hoạt ảnh qua javascript sử dụng openlayers.

sử dụng chiến lược bộ lọc để xác định nội dung hiển thị vào thời điểm nào.

có sẵn javascript đầy đủ.

+1

Cổ điển! :) 404 –

+0

@HenryAloni cảm ơn vì đã đăng ký. đã thay đổi URL để phản ánh những thay đổi trong cấu trúc web mới của openlayers.org (từ thư mục con đến mục con). ;) –

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