我想使用十进制的Lon和Lat,就像Google地图使用的那样。但是似乎我需要在OpenLayers中转换LonLat对象,例如
var map, layer;
function init(){
map = new OpenLayers.Map('map');
layer = new OpenLayers.Layer.OSM( "Simple OSM Map");
map.addLayer(layer);
map.setCenter(
new OpenLayers.LonLat(-1.60400390625, 54.07228265560386).transform(
new OpenLayers.Projection("EPSG:4326"),
map.getProjectionObject()
), 6
);
var markers = new OpenLayers.Layer.Markers( "Markers" );
map.addLayer(markers);
var size = new OpenLayers.Size(21,25);
var offset = new OpenLayers.Pixel(0,0);
var icon = new OpenLayers.Icon('http://www.openlayers.org/dev/img/marker.png', size, offset);
markers.addMarker(new OpenLayers.Marker(new OpenLayers.LonLat(-1.60400390625, 54.07228265560386).transform(new OpenLayers.Projection("EPSG:4326"),map.getProjectionObject()),icon));
}每次我放置一个标记时,位置都需要转换为EPSG:4326。有没有一种方法可以告诉地图始终使用这种投影?
发布于 2012-09-10 02:49:45
是否可以在地图上设置投影,取决于您为基础图层使用的服务。据我所知,OSM只在EPSG:900913中提供了渲染的瓦片,所以在将它们添加到地图之前,没有办法转换坐标。你可以搜索一个在多个投影中提供磁贴的服务,但到目前为止我还没有看到一个免费的。另一种方法是在所需的投影中呈现您自己的瓦片,并通过您自己的瓦片服务器提供它们。
假设您有这样一张地图,您可以使用OpenLayers.Map.setOptions()更改投影,如下所示:
map.setOptions({
projection: "EPSG:4326"
});但你也可能需要设置一些与投影相关的属性,比如maxExtent等。参见this question。
https://stackoverflow.com/questions/12341702
复制相似问题