我试图通过方法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>
我认为这可能是由错误的地图投影引起的,在您的地图中您应该设置地图投影(我在示例中使用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投影。
标记准确地显示在它应该在的位置?
无论如何,试试这个:
map.setCenter(new OpenLayers.LonLat(lon, lat).transform('EPSG:4326', 'EPSG:3857'), zoom);