2012-02-13 14 views
3

私はPatrick WiedのOpenLayersヒートマップレイヤーを使用していますが、英国のロケーションのみです。OpenLayersで初期マップエリアを設定する方法は?

英国だけを表示するために初期地図の表示領域をプリセットするにはどうすればよいですか?

ここで私はそれがほぼ正確にパトリックのデモページのようだが、1つの違いがASPXページに

var map, layer, heatmap; 
    function init() { 
    var testData = <asp:literal id="cLtMapData" runat="server" />  
    var transformedTestData = { max: testData.max, data: [] }, 
     data = testData.data, 
     datalen = data.length, 
     nudata = []; 
    // in order to use the OpenLayers Heatmap Layer we have to transform our data into 
    // { max: <max>, data: [{lonlat: <OpenLayers.LonLat>, count: <count>},...]} 
    while (datalen--) { 
     nudata.push({ 
     lonlat: new OpenLayers.LonLat(data[datalen].lon, data[datalen].lat), 
     count: data[datalen].count 
     }); 
    } 
    transformedTestData.data = nudata; 
    map = new OpenLayers.Map('heatmapArea'); 
    layer = new OpenLayers.Layer.OSM(); 

    // create our heatmap layer 
    heatmap = new OpenLayers.Layer.Heatmap("Heatmap Layer", map, layer, { visible: true, radius: 10 }, { isBaseLayer: false, opacity: 0.3, projection: new OpenLayers.Projection("EPSG:4326") }); 
    map.addLayers([layer, heatmap]); 
    map.zoomToMaxExtent(); 
    //maxExtent: new OpenLayers.Bounds(-1*b, -1*b, b, b); 
    map.zoomIn(); 
    heatmap.setDataSet(transformedTestData); 
    } 

を使用したコードだ - VARのTESTDATA =(ASPリテラル) - 私は、動的に使用することができるようにユーザーは選択されたデータを取得し、英国のポストコードを緯度と経度に変換するストアドプロシージャを使用してSQLデータベースから取得します。

答えて

0

私は地図の初期化でそれを行います。このような何か:

map = new OpenLayers.Map({ 
     projection: new OpenLayers.Projection("EPSG:900913"), 
     units: "m", 
     numZoomLevels: 18, 
     maxResolution: 156543.0339, 
     maxExtent: new OpenLayers.Bounds(
      -20037508.34, -20037508.34, 20037508.34, 20037508.34 
     ), 
     layers: [ 
      new OpenLayers.Layer.OSM("OpenStreetMap", null, { 
       transitionEffect: 'resize' 
      }) 
     ], 
     center: new OpenLayers.LonLat(-10309900, 4215100), 
     zoom: 4 
    }); 
+0

便利に見えますが、私はこのコード行について思ったんだけど、「センター:新OpenLayers.LonLatを(-10309900、4215100)、」 - とLonLat単位が何でありますか?彼らは "ノーマル"ロング/ラットx 10^6ですか?私が何か間違ったことしなければならない –

+0

...私はこれをしようとした場合、「VAR緯度= 52; \t \tするvar LON = -1; \t \tするvarズーム= 3; map.setCenter(新しいOpenLayers.LonLat(LON、 lat)、ズーム); "ズームインしますが、地図は英国ではなく西アフリカに集中しています –

+0

LonLatがマップを投影しています。したがって、メーターを使用するWeb Mercatorの場合です。あなたの地域のWeb mercatorの座標と中心を取得するか、投影を行う必要があります。 –

0
var lat = -3.841867446899414; 
     var lon = 43.466002139041116; 
     var zoom = 0; 


     var fromProjection = new OpenLayers.Projection("EPSG:28992"); // EPSG:4326Transform from WGS 1984 
     var toProjection = new OpenLayers.Projection("EPSG:900913"); // to Spherical Mercator Projection 
     var position = new OpenLayers.LonLat(lon, lat).transform(fromProjection, toProjection); 



     var options = { 

      controls: [ 
     new OpenLayers.Control.Navigation(), 
     new OpenLayers.Control.MousePosition(), 

     new OpenLayers.Control.PanZoomBar(), 
     new OpenLayers.Control.Permalink() 

     ] 
     }; 

     map = new OpenLayers.Map("basicMap", options); 
     var mapnik = new OpenLayers.Layer.OSM(); 
     map.addLayer(mapnik);   
     map.setCenter(position, zoom); 
関連する問題