2010-04-29 11 views
30

Bir çizginin nasıl çizileceğini gösteren örneklerin here olduğunu gördüm, ancak örnekler yalnızca fareyle nasıl yapılacağını gösterir.OpenLayers'da bir çizgi ile bir yol çizme JavaScript'i kullanarak

Yapmak istediğim Boylam ve Enlem koordinatlarının bir listesi verilen JavaScript'i kullanarak satırı elle çizmektir.

Yukarıdaki bağlantıda sağlanan kaynak üzerinde çalışmamamın nedeni, yalnızca activate özelliğini özelliğin üzerinde aradıkları ve daha sonra kullanıcının işaret ettiği ve haritayı tıklatacağıdır.

Herkes OpenLayers haritasına programatik olarak bir yol çizdi mi?

Tam olarak ne yapmak istiyorum: http://openspace.ordnancesurvey.co.uk/openspace/example4.html, ancak OpenSpace kullanmadan.

cevap

51

Sen LineString nesne İşte

faydalanmak gerekir bir örnektir:

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]); 

map varsayarsak, harita nesnesi ve lon ve lat şamandıra değerleridir olduğunu. Openlayers kullanarak javascript ile animasyonu

+4

Sadece yeni OpenLayers.Geometry.Point yerine 'new OpenLayers.Geometry.Point (lon, lat) .transform (new OpenLayers.Projection (" EPSG: 4326 "), map.getProjectionObject()); (lon1, lat1) 'wsg84 koordinatlarına sahip olduğum gibi – yankee

+2

Çalışma Örneği (Mannaz + küçük değişiklikler) http://jsfiddle.net/4q7vx/25/ – aatdark

+1

İyi örnek. DrawFeature aslında gerekli değil, "map.addControl (.... DrawFeature ...);" göz ardı edilebilir. – dube

0

Daha önce hiç kendim yapmadım, ama OpenSteetMap'in bunu yaptığını biliyorum. Örneğin:

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

onların kodu ile çalışmak ne kadar zor olacağını Fikrim yok.

+0

Evet, OpenStreetMap örneğini gördüm, ancak bunu OpenLayers ile yapmaya çalışıyorum sadece –

+0

Tamam. Üzgünüm orada sana yardım edemez. – RoToRa

1

this page is a classic example.

Zamanında neyin gösterileceğini tanımlamak için bir filtre stratejisi kullanır. tam javascript kullanılabilir.

+1

Klasik! :) 404 –

+0

@HenryAloni, katılım için teşekkürler. openlayers.org'un yeni web yapısındaki değişiklikleri (alt dizinden submain'e) yansıtacak şekilde URL'yi değiştirdi. ;) –