2010-04-29 27 views
30

He visto los ejemplos presentados here de cómo dibujar una línea, pero los ejemplos solo muestran cómo hacerlo con el mouse, haciendo clic.Dibujando una ruta con una línea en OpenLayers usando JavaScript

Lo que quiero hacer es dibujar la línea manualmente usando JavaScript dada una lista de coordenadas de longitud y latitud.

La razón por la que no puedo trabajar con la fuente proporcionada en el enlace anterior es porque solo están llamando al activate en la función, y luego dejan que el usuario señale y haga clic en el mapa.

¿Alguien ha trazado alguna ruta en un mapa de OpenLayers programáticamente?

Lo que quiero hacer es exactamente esto: http://openspace.ordnancesurvey.co.uk/openspace/example4.html, pero sin usar OpenSpace.

Respuesta

51

Usted tendría que hacer uso de la LineString objeto

He aquí un ejemplo:

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

Suponiendo map es su hoja de objeto y lon y lat son valores de coma flotante.

+4

Tuve que usar 'new OpenLayers.Geometry.Point (lon, lat) .transform (nuevo OpenLayers.Projection (" EPSG: 4326 "), map.getProjectionObject());' en lugar de solo 'new OpenLayers.Geometry.Point (lon1, lat1) 'como tenía las coordenadas wsg84 – yankee

+2

Ejemplo de trabajo (por Mannaz + pequeñas modificaciones) http://jsfiddle.net/4q7vx/25/ – aatdark

+1

Buena muestra. La DrawFeature en realidad no es necesaria, la línea "map.addControl (.... DrawFeature ...);" puede ser omitido. – dube

0

Nunca lo he hecho antes, pero sé que OpenSteetMap lo hace. Por ejemplo:

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

Ni idea de lo difícil que sería trabajar a través de su código.

+0

Sí, vi el ejemplo de OpenStreetMap, pero estoy tratando de hacer esto con OpenLayers solo –

+0

Ok. Lo siento, no puedo ayudarte allí. – RoToRa

1

this page is a classic example de animación a través de javascript usando openlayers.

utiliza una estrategia de filtro para definir qué mostrar en qué momento.

javascript completo disponible.

+1

clásico! :) 404 –

+0

@HenryAloni gracias por el heads-up. cambió la URL para reflejar los cambios en la nueva estructura web de openlayers.org (de subdirectorio a submain). ;) –

Cuestiones relacionadas