2009-04-21 7 views

답변

3

레이어에 따라 실제로 변환 할 수없는 일종의 기본지도 (지도)가 있습니다. 해당 맵에 데이터 (마커, geo json stuff 등)를 추가하려면 baselayer가 사용중인 투영으로 변환해야합니다.

// defining our coordinate systems 
var google = new OpenLayers.Projection("EPSG:900913"), 
    latlon = new OpenLayers.Projection("EPSG:4326"); 

// transforming the location to the right coordinate system 
var location = new OpenLayers.LonLat(10, 10).transform(latlon, google); 

// assuming you made an icon and marker layer 
var marker = new OpenLayers.Marker(location, icon);  

markerLayer.addMarker(marker); 

체크 아웃 한 시스템에서 다른 시스템으로 위치를 변환에 대한 Openlayers 문서 : 마커이 들어

은 easyly하여 수행 할 수 있습니다.

2

지도 서버가 다른 래스터를 제공하는 경우 운이 좋지 않을 수 있습니다.

그러나 벡터 (예 : KML 파일) 또는 자바 스크립트로 작성된지도 객체 (예 : Dre의 답변)를 제공하는 경우 다른 투영간에 변환하여 모든 데이터가 동일한 투영법 및 좌표계에 표시되도록 할 수 있습니다 기본지도로. OpenLayers는이를위한 단서를 가지고 있지만 (Dre의 답변 참조), 아마도 기능을 제공하는 Proj4JS 라이브러리를 포함해야 할 것입니다.

또는 Proj4JS를 사용하여 플로팅하기 전에 좌표를 변환 할 수 있습니다.

2

이 질문은 오래된 질문이지만, 검색을 통해이 문제가 발생했으며, 다른 사람들에게 도움이 될 경우이 문제를 해결할 수 있다고 생각했습니다.

이것은 질문에 직면 한 상황과 다를 수 있지만 최근에 비슷한 상황이 발생했습니다. 필자의 경우 두 개의 서로 다른 WMS 공급자의 출력을 하나의 맵에 표시해야했습니다. 하나는 EPSG : 900913에서, 다른 하나는 EPSG : 3857에서 서비스를 제공했습니다. 이 are functionally equivalent을 알고 있다면, 서비스를 작동시키는 방식으로 요청할 수 있다면지도가 출력물과 함께 작동 할 수 있다고 생각했습니다. 내지도는 900913에 있으며 다른 서비스는 기본적으로이 투영법을 사용하여 요청합니다.

나는 (당신의 정보가 기입으로) 다음과 같이 다른 서비스가 제대로 요청했다 될 얻을 수 있었다 방법 :

var myLayer = new OpenLayers.Layer.WMS(
    "Name", 
    "URL", { 
     "layer": "layer" 
    }); 

myLayer.projection = "EPSG:3857"; 

는 일반적으로 서비스 URL에 ?request=getCapabilities를 추가하면 예측이 사용할 수있는 볼 수 있습니다 원하는 레이어의 CRS 태그에있는 서비스에서