2010-04-29 18 views
30

Widziałem przykłady prezentacji here, jak narysować linię, ale przykłady pokazują tylko, jak to zrobić za pomocą myszy, klikając.Rysowanie ścieżki za pomocą linii w OpenLayers przy użyciu JavaScript

Co chcę zrobić, to: narysować linię ręcznie za pomocą JavaScriptu, podając listę współrzędnych długości i szerokości geograficznej.

Powód, dla którego nie mogę pracować ze źródłem podanym w powyższym linku, polega na tym, że wywołują tylko funkcję activate, a następnie pozwalają użytkownikowi wskazać i kliknąć mapę.

Czy ktoś kiedykolwiek narysował ścieżkę na mapie OpenLayers programowo?

Co chcę zrobić, to dokładnie to: http://openspace.ordnancesurvey.co.uk/openspace/example4.html, ale bez użycia OpenSpace.

Odpowiedz

51

Trzeba by skorzystać z LineString obiektu

Oto przykład:

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

Zakładając map to Twój obiekt mapy i lon i lat są wartościami pływaka.

+4

Musiałem użyć 'new OpenLayers.Geometry.Point (lon, lat) .transform (new OpenLayers.Projection (" EPSG: 4326 "), map.getProjectionObject());' zamiast tylko 'new OpenLayers.Geometry.Point (lon1, lat1) 'jak miałem wsg84 współrzędne – yankee

+2

Przykład roboczy (przez Mannaz + małe modyfikacje) http://jsfiddle.net/4q7vx/25/ – aatdark

+1

Dobra próbka. DrawFeature w rzeczywistości nie jest potrzebny, wiersz "map.addControl (.... DrawFeature ...);" można pominąć. – dube

0

Nigdy wcześniej tego nie robiłem, ale wiem, że OpenSteetMap to robi. Na przykład:

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

Nie mam pojęcia, jak trudno byłoby pracować przez ich kodu.

+0

Tak, widziałem przykład OpenStreetMap, ale próbuję to zrobić tylko z OpenLayers –

+0

Ok. Niestety nie mogę ci tam pomóc. – RoToRa

1

this page is a classic example animacji za pośrednictwem javascript za pomocą openlayers.

wykorzystuje strategię filtrowania, aby określić, co ma pokazywać w jakim momencie.

pełne javascript dostępne.

+1

Classic! :) 404 –

+0

@HenryAloni dzięki za heads-up. zmienił adres URL, aby odzwierciedlić zmiany w nowej strukturze internetowej openlayers.org (z podkatalogu na submany). ;) –

Powiązane problemy