5

我尝试通过 setCenter 方法设置地图中心,但仍然无法正常工作。地图不动。我尝试使用从投影到地图投影的转换但没有成功。这是代码的一部分。谢谢。

<script type="text/javascript">
        var lon = 15.869378; //WGS LL84
        var lat = 49.528964;
        var zoom = 5;
        var map, layer;

        function init(){
            map = new OpenLayers.Map('map');
            layer = new OpenLayers.Layer.TMS("Name",
                   "[URL]",
                   { 'type':'png', 'getURL':get_my_url });

            map.addLayer(layer);

            var markers = new OpenLayers.Layer.Markers( "Markers" );
            map.addLayer(markers);
            markers.addMarker(new OpenLayers.Marker(new OpenLayers.LonLat(lon, lat).transform(
                new OpenLayers.Projection("EPSG:4326"),
                map.getProjectionObject())));

            map.setCenter(new OpenLayers.LonLat(lon, lat).transform(
                new OpenLayers.Projection("EPSG:4326"),
                map.getProjectionObject()), zoom);

        }                       
    </script>
4

2 回答 2

4

我认为这可能是由于地图投影错误造成的,在您的地图中您应该设置地图投影(我在示例中使用EPSG:900913),例如:

map = new OpenLayers.Map('testmap', {           
    numZoomLevels: 10,
    projection: new OpenLayers.Projection("EPSG:900913"),
    displayProjection: new OpenLayers.Projection("EPSG: 4326")
    });

如果您不这样做, map.getProjectionObject() 仍将获得 EPSG:4326 投影。

于 2013-12-09T18:10:35.487 回答
1

标记是否准确显示在它应该在的位置?

无论如何,试试这个:

map.setCenter(new OpenLayers.LonLat(lon, lat).transform('EPSG:4326', 'EPSG:3857'), zoom);
于 2013-12-08T00:56:54.293 回答