首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >OpenLayers LonLat变换

OpenLayers LonLat变换
EN

Stack Overflow用户
提问于 2012-09-10 02:25:05
回答 1查看 7.7K关注 0票数 0

我想使用十进制的Lon和Lat,就像Google地图使用的那样。但是似乎我需要在OpenLayers中转换LonLat对象,例如

代码语言:javascript
复制
    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。有没有一种方法可以告诉地图始终使用这种投影?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-09-10 02:49:45

是否可以在地图上设置投影,取决于您为基础图层使用的服务。据我所知,OSM只在EPSG:900913中提供了渲染的瓦片,所以在将它们添加到地图之前,没有办法转换坐标。你可以搜索一个在多个投影中提供磁贴的服务,但到目前为止我还没有看到一个免费的。另一种方法是在所需的投影中呈现您自己的瓦片,并通过您自己的瓦片服务器提供它们。

假设您有这样一张地图,您可以使用OpenLayers.Map.setOptions()更改投影,如下所示:

代码语言:javascript
复制
map.setOptions({
    projection: "EPSG:4326"
});

但你也可能需要设置一些与投影相关的属性,比如maxExtent等。参见this question

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12341702

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档