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數據庫中檢索。
這看起來有用,我只是想知道這行代碼「中心:新OpenLayers.LonLat(-10309900,4215100),」 - 和LonLat單位是什麼?他們是「正常的」長/ lat x 10^6? – 2012-02-14 15:03:06
我必須做一些錯誤的...如果我試試這個,「VAR LAT = 52; \t \t VAR LON = -1; \t \t VAR變焦= 3; map.setCenter(新OpenLayers.LonLat(LON, lat),縮放);「它放大了,但是地圖集中在西非,而不是英國 – 2012-02-14 15:25:03
LonLat在地圖的投影中。因此,在這種情況下使用米的Web墨卡託。您需要獲得您所在地區的網站mercator座標(和中心)或進行投影。 – 2012-02-14 15:47:47