2009-07-31 2 views
2

오픈 아파치 위젯 응용 프로그램에 공개지도 위젯을 포함하고 싶습니다. wicket-stuff에서 wicket-contrib-openlayers 구성 요소를 사용하여 임 다음과 같은 코드 : 구성 요소에서 SimpleOpenStreetMapExample 1 부 :Wicket : Openlayers Integration & Open Streetmaps Layer

List<Layer> layers = new ArrayList<Layer>(); 
    Layer layerOSMTilesAtHome = new OSM("Osmarender", OSMLayer.TilesAtHome); 
    Layer layerOSMMapnik = new OSM("Mapnik", OSMLayer.Mapnik); 
    Layer layerOSMCycleMap = new OSM("CycleMap", OSMLayer.CycleMap); 

    layers.add(layerOSMMapnik); 
    layers.add(layerOSMTilesAtHome);   
    layers.add(layerOSMCycleMap); 

    HashMap<String, String> mapOptions = new HashMap<String, String>(); 
    Bounds boundsExtend = new Bounds(new LonLat(-20037508.34, -20037508.34), new LonLat(20037508.34, 20037508.34));  
    mapOptions.put("maxExtent", boundsExtend.getJSconstructor()); 
    mapOptions.put("projection", "new OpenLayers.Projection('EPSG:900913')"); 
    mapOptions.put("displayProjection", "new OpenLayers.Projection('EPSG:4326')"); 
    mapOptions.put("units", "'meters'"); 
    mapOptions.put("maxResolution", "156543"); 
    mapOptions.put("numZoomLevels", "18"); 

    OpenLayersMap map = new OpenLayersMap("map", layers, mapOptions);  

    map.addControl(Control.LayerSwitcher); 
    map.addControl(Control.MousePosition); 
    map.addControl(Control.KeyboardDefaults); 

    add(map); 

이는 1입니다. 이제 문제는 :지도의 중심을 어떻게 설정합니까? 시도해 보니

map.setCenter(new LonLat(5, 50), 13); 

"추가 (지도); 위의 코드에서. 이 doesnt 일,지도는 전혀 바뀌지 않는다. 경도와 위도가있는 것으로 무엇을 단위 임 확실하지, 나 또한 그들에게이 방법을 사용하여 메르카토르 - 시스템 변환을 시도 :

private static double lon2Merc(double lon) { 
    return 20037508.34*lon/180.0; 
    } 

    private static double lat2Merc(double lat) { 
    lat = Math.log(Math.tan((90.0 + lat)*Math.PI/360.0))/(Math.PI/180.0); 
    return 20037508.34*lat/180.0; 
    } 

하지만이 나던 도움을, 아무것도 변경되지 않습니다.

그래서 누구든지 OSM-Map을 Wicket에 삽입하는 방법과 센터 및 줌 레벨을 설정하는 방법에 대한 간단한 예를 게시 할 수 있습니까?

감사!

답변

0

Wicket의 Openlayers 사용 예가 있습니다. 이것을 시도 했습니까?

?

0

Wicket에 특별한 요구 사항이 있는지 확실하지 않지만 레이어를 만들 때 특정 해상도를 지정하여 OpenLayers에서 확대/축소 레벨을 설정할 수 있습니다.

gsat = new OpenLayers.Layer.Google(
      "Google Satellite", 
      {type: google.maps.MapTypeId.SATELLITE, maxZoomLevel: 18, 
       minZoomLevel:13} 

당신은 setCenter function.

과지도의 중심을 설정할 수 있습니다

osm = new OpenLayers.Layer.OSM("OpenStreetMap", 
       "", {isBaseLayer: true, displayInLayerSwitcher: true, 
       zoomOffset: 13, resolutions: 
       [19.1092570678711, 9.55462853393555, 4.77731426696777, 
       2.38865713348389, 1.19432856674194, 0.5971642833709717]}), 

다른지도 providors 자신의 API를 다른 매개 변수가있을 수 있습니다 : 다음은 그 예이다