2012-02-13 3 views
3

저는 Patrick Wied의 OpenLayers Heatmap 레이어를 사용하고 있지만 영국의 위치에 대해서만 사용하고 있습니다.OpenLayers에서 초기 맵 영역을 설정하는 방법은 무엇입니까?

영국을 표시하도록 초기지도 표시 영역을 미리 설정하려면 어떻게해야합니까? 여기

은 내가 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 단위가 무엇인지? 그들은 "정상적인"long/lat x 10^6입니까? 내가 뭔가 잘못하고 있어야합니다 –

+0

...이를하려고하면, "VAR 위도 = 52; \t \t var에 경도 = -1; \t \t VAR 줌 = 3; map.setCenter (새 OpenLayers.LonLat (경도, 위도), 줌); " 확대되지만지도는 영국이 아닌 서 아프리카에 중심을두고 있습니다. –

+0

LonLat이지도를 투영했습니다. 따라서이 경우 메터를 사용하는 웹 메르카토르입니다. 해당 지역의 웹 메르 케이터 좌표 (및 센터)를 가져 오거나 프로젝션을 수행해야합니다. –

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); 
관련 문제