2010-04-29 13 views
30

Ich habe die gezeigten Beispiele here des Zeichnens einer Linie gesehen, aber die Beispiele zeigen nur, wie man es mit der Maus macht, indem man klickt.Einen Pfad mit einer Linie in OpenLayers mit JavaScript zeichnen

Was ich tun möchte, ist zeichnen Sie die Zeile manuell mit JavaScript eine Liste der Längen- und Breitenkoordinaten gegeben.

Der Grund, warum ich nicht an der im obigen Link angegebenen Quelle arbeiten kann, ist, dass sie nur activate für das Feature aufrufen und den Benutzer dann auf die Karte zeigen und klicken.

Hat jemand jemals einen Pfad auf einer OpenLayers-Karte programmatisch gezeichnet?

Was ich tun möchte, ist genau das: http://openspace.ordnancesurvey.co.uk/openspace/example4.html, aber ohne OpenSpace.

Antwort

51

Sie benötigen würde die Verwendung des LineString Objekt

Hier ist ein Beispiel zu machen:

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 Unter der Annahme, ist Ihr Kartenobjekt und lon und lat sind Float-Werte.

+4

Ich musste 'new OpenLayers.Geometry.Point (lon, lat) .transform (neue OpenLayers.Projection (" EPSG: 4326 "), map.getProjectionObject());' statt nur 'new OpenLayers.Geometry.Point verwenden (lon1, lat1) 'wie ich hatte wsg84 Koordinaten – yankee

+2

Arbeitsbeispiel (von Mannaz + kleine Modifikationen) http://jsfiddle.net/4q7vx/25/ – aatdark

+1

Gute Probe. Das DrawFeature wird eigentlich nicht benötigt, die Zeile "map.addControl (.... DrawFeature ...);" kann ausgelassen werden. – dube

0

Ich habe es noch nie selbst gemacht, aber ich weiß, OpenSteetMap tut es. Zum Beispiel:

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

Keine Ahnung, wie schwierig es sein würde, durch ihren Code zu arbeiten.

+0

Ja, ich habe das OpenStreetMap-Beispiel gesehen, aber ich versuche, dies nur mit OpenLayers zu tun –

+0

Ok. Sorry kann dir da nicht helfen. – RoToRa

1

this page is a classic example Animation über Javascript mit Openlayers.

Es wird eine Filterstrategie verwendet, um festzulegen, was zu welchem ​​Zeitpunkt angezeigt werden soll.

volles Javascript verfügbar.

+1

Klassisch! :) 404 –

+0

@HenryAloni danke für den heads-up. Die URL wurde geändert, um die Änderungen in der neuen Webstruktur von openlayers.org widerzuspiegeln (von Unterverzeichnis zu Submain). ;) –

Verwandte Themen