openlayers starter:rcp1_map上的setCenter

时间:2013-10-29 16:54:21

标签: openlayers

亲爱的openlayers专家:我开始使用openlayers cookbook中的第一个例子(不均匀;有更好的吗?),将zoom max更改为setCenter调用,然后尝试了。缩放工作,中心没有。它可能是一个真正简单的问题,但对新手来说很困惑。我也不确定rcp1_map的位置,可能是世界地图:

<!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

1 个答案:

答案 0 :(得分: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

Google Mercator中洛杉矶的坐标为-13180189,4018753。请查看http://www.maptiler.org/google-maps-coordinates-tile-bounds-projection/,了解Google Mercator中事物的坐标。

至于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>

我希望这会有所帮助。