Projections and OpenLayers.Geometry.Point in openlayers

Projections and OpenLayers.Geometry.Point in openlayers

本文关键字:in openlayers Point Geometry and OpenLayers Projections      更新时间:2023-09-26

我正在尝试显示具有三个图层(谷歌地图图层,WMS图层和点图层)的地图,这是我的代码:

     var map = new OpenLayers.Map({
         div: "map",
         maxExtent: new OpenLayers.Bounds(-20037508, -20037508, 20037508, 20037508.34)
     });

     var capaGoogle = new OpenLayers.Layer.Google(
                "Google Satellite",
                { type: G_SATELLITE_MAP, sphericalMercator: true, transparent: true }
            );
     var wmsOverlay = new OpenLayers.Layer.WMS("OpenLayers WMS",
         "http://localhost:1979/geoserver/wms",
         { layers: 'world:PYCIUDADES', transparent: true }, { isBaseLayer: false });

     var vectorLayer = new OpenLayers.Layer.Vector("vector");
     vectorLayer.addFeatures([
        new OpenLayers.Feature.Vector(
            new OpenLayers.Geometry.Point(-57.635021, -25.276987)
        ),
        new OpenLayers.Feature.Vector(
            new OpenLayers.Geometry.Point(-56.759034, -22.71539)
        )
        ]
    );
     map.addLayers([wmsOverlay, vectorLayer, capaGoogle]);
     map.addControl(new OpenLayers.Control.LayerSwitcher());
     var center = new OpenLayers.LonLat(-57.58, -25.27).transform(
     new OpenLayers.Projection("EPSG:4326"),
     map.getProjectionObject()
     )
     map.setCenter(center, 6);

"vectorLayer"图层必须位于我的地图上方,但我得到了这个(我的 wms 图层在南美洲,我的点也必须在南美洲,但它们靠近非洲):

http://i45.tinypic.com/34y40zk.png

我能做什么?

提前致谢

您应该转换点的坐标:

var epsg4326 = new OpenLayers.Projection('EPSG:4326');
var epsg900913 = new OpenLayers.Projection('EPSG:900913');
vectorLayer.addFeatures([
    new OpenLayers.Feature.Vector(
        new OpenLayers.Geometry.Point(-57.635021, -25.276987).transform(epsg4326, epsg900913)
    ),
    new OpenLayers.Feature.Vector(
        new OpenLayers.Geometry.Point(-56.759034, -22.71539).transform(epsg4326, epsg900913)
    )
]);

"毗邻非洲" = 经度 0 纬度 0

当您简单地输入经度和纬度时,OL 将其视为 WGS84 投影(标准)。

但是,由于您使用的是 Google 图层 (CapaGoogle),这是一个墨卡托参考投影,因此您最终会同时使用两个参考投影(4326 = WGS84 和 900913 = 墨卡托),并且地图服务器会考虑您的标记的位置,因为它们"不正确"。 因此,它只是将它们放在 (0,0) 处。

正如DrNextGIS所说,您必须"变换点坐标",以便地图上的所有内容都使用相同的投影。

如果您使用的是简单的OpenLayer地图(没有Google或OSM),则不会遇到此问题。