2009-07-31 12 views
2

open-street-mapウィジェットを私のapache wicketアプリケーションに組み込みたいと思います。 IM 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です。問題は次のとおりです。マップの中心を設定するにはどうすればいいですか?私は "add(map);"の後に

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

の後に試しました。上のコードから。これはうまくいきません、地図は全く変わりません。ロンと緯度がでなければならないものをユニットイムわからない、私はまた、彼らにこの方法を使用してメルカトル図法、システムに変換しようとした:

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; 
    } 

しかしこのdoesntのヘルプを、何も変わりません。

So:OSM-MapをWicketに埋め込む方法と、センターとズームレベルを設定する方法を誰かが簡単に投稿できますか?

ありがとうございました!

答えて

0

Wicketに特別な要件があるかどうかはわかりませんが、レイヤーの作成時に特定の解像度を指定することで、OpenLayersでズームレベルを設定できます。ここでは例です:

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で異なるパラメータを持っていることがあります。

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

あなたはsetCenter function.

とマップの中心を設定することができます
関連する問題