2010-04-29 6 views
30

예를 들어 마우스로 클릭하고 수행하는 방법 만 보여주는 예제는 here의 선 그리기 방법을 보았습니다.JavaScript를 사용하여 OpenLayers에서 선으로 패스 그리기

위도 및 경도 좌표 목록을 사용하여 JavaScript를 사용하여 수동으로 줄을 그어 넣으려는 것은 입니다.

위 링크에서 제공되는 소스에서 작동하지 않는 이유는 해당 기능에서 activate 만 호출하고 사용자가지도를 가리키고 클릭하게하기 때문입니다.

누구나 프로그래밍 방식으로 OpenLayers지도에서 경로를 그렸습니까?

정확히 내가하고자하는 것은 http://openspace.ordnancesurvey.co.uk/openspace/example4.html이지만 OpenSpace를 사용하지 않습니다.

답변

51

당신은 LineString 오브젝트 여기

을 활용해야하는 예입니다

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 가정하면지도 객체와 lonlat는 부동 소수점 값입니다이다.

+4

새로운 OpenLayers.Geometry.Point (lon, lat) .transform (new OpenLayers.Geometry.Point 대신 새로운 OpenLayers.Projection ("EPSG : 4326"), map.getProjectionObject()); (lon1, lat1)'내가 wsg84 좌표를 가지고있다. – yankee

+2

Working Example (Mannaz + 작은 수정본) http://jsfiddle.net/4q7vx/25/ – aatdark

+1

좋은 샘플. DrawFeature는 실제로 필요하지 않습니다. "map.addControl (.... DrawFeature ...);" 생략 할 수 있습니다. – dube

0

전에 본 적이 없지만 OpenSteetMap이 알고 있습니다. 예를 들면 :

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

그들의 코드를 통해 작동하는 것이 얼마나 어려운 아니 생각.

+0

예, OpenStreetMap 예제를 보았습니다.하지만 OpenLayers 만 사용하려고합니다. –

+0

Ok. 미안하지만 너를 도울 수 없어. – RoToRa

1

this page is a classic example of javascript via openlayers.

필터 전략을 사용하여 어떤 순간에 무엇을 표시할지 정의합니다.

전체 자바 스크립트를 사용할 수 있습니다.

+1

클래식! :) 404 –

+0

@HenryAloni는 헤드 업에 감사드립니다. openlayers.org의 새로운 웹 구조 (하위 디렉토리에서 하위 디렉토리로)의 변경 사항을 반영하도록 URL을 변경했습니다. ;) –

관련 문제