2013-10-29 54 views
0

親愛的openlayers專家:我從openlayers cookbook的第一個例子開始(不均勻;是否還有更好的?),將最大縮放比例更改爲setCenter調用,並嘗試使用它。縮放工作,中心沒有。它可能是一個真正簡單的問題,但令人困惑的新手。我也不知道從哪裏rcp1_map生活,這大概是世界地圖:openlayers starter:rcp1_map上的setCenter

<!DOCTYPE html> 
<html> 
    <head> 
    <title>Map</title> 
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 
    <script type="text/javascript" 
       src="http://openlayers.org/api/OpenLayers.js"></script> 
    <style> html, body { width: 80%; height: 80%; margin: 1em; padding: 1em; } </style> 

    <script type="text/javascript"> 
     function init() { 
      var map = new OpenLayers.Map("rcp1_map"); 
      var osm = new OpenLayers.Layer.OSM(); 
      map.addLayer(osm); 
      map.setCenter(new OpenLayers.LonLat(34.05,118.25), 5); 
     } 
    </script> 
    </head> 

<body onload="init()"> 
    <h1>Hello, Los Angeles</h1> 
    <div id="rcp1_map" style="width: 100%; height: 100%;"></div> 
</body> 
</html> 

和,而不是rcp1_map,應該或可能我下下載一個完整的世界地圖到街道級別的地方,並安裝它?

初學者建議讚賞。

/IAW

回答

0

首先,如果你定義你的地圖,你叫onload="init()"之前爲:

var map; 
function init() { 
    map = new OpenLayers.Map("rcp1_map"); 
    var osm = new OpenLayers.Layer.OSM(); 
    map.addLayer(osm); 
    map.setCenter(new OpenLayers.LonLat(34.05,118.25), 5); 
} 

然後setCenter會工作。問題是你現在正在谷歌座標中輸入座標。見http://docs.openlayers.org/library/spherical_mercator.html

洛杉磯在谷歌墨卡託的座標是-13180189,4018753。看看http://www.maptiler.org/google-maps-coordinates-tile-bounds-projection/,看看谷歌墨卡託的東西座標是什麼。

至於rcp1_map,這是地圖進入你的頁面內的div的ID。

下面是最終代碼:

<!DOCTYPE html> 
<html> 
<head> 
<title>Map</title> 
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 
<script type="text/javascript" 
      src="http://openlayers.org/api/OpenLayers.js"></script> 
<style> html, body { width: 80%; height: 80%; margin: 1em; padding: 1em; } </style> 

<script type="text/javascript"> 
    var map; 
    function init() { 
     map = new OpenLayers.Map("rcp1_map"); 
     var osm = new OpenLayers.Layer.OSM(); 
     map.addLayer(osm); 
     map.setCenter(new OpenLayers.LonLat(-13180189,4018753), 5); 
    } 
</script> 
</head> 

<body onload="init()"> 
<h1>Hello, Los Angeles</h1> 
<div id="rcp1_map" style="width: 100%; height: 100%;"></div> 
</body> 
</html> 

我希望這有助於。

+0

幫助很多!謝謝。 init之前的「var map」似乎沒有改變任何東西。 最重要的是:你的新座標有效 - 現在我明白了什麼是錯的!有沒有一個函數可以從LL轉換成M?我試過** var proj = new OpenLayers.Projection(「EPSG:4326」); var point = new OpenLayers.LonLat(34.05,118.25); map.setCenter(point.transform(proj,map.getProjectionObject()),5); **但失敗。 其中是rcp1_map?它在openlayers.org(通過OpenLayers.js)?我的網站應該託管它嗎? (並且,是否有一本初學者書你會推薦?) –

+0

我有問題,除非我在init()之前定義map。 – CDavis

+0

嘗試'point = new OpenLayers.LonLat(-118.25,34.05);'爲了您的觀點。你的逆轉是逆轉的,你也需要在西半球 – CDavis