2

3 つのレイヤー (Google マップ レイヤー、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

私に何ができる?

前もって感謝します

4

2 に答える 2

6

ポイントの座標を変換する必要があります。

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)
    )
]);
于 2012-06-01T07:14:41.020 に答える
1

「アフリカの隣」 = 経度 0 緯度 0

単に経度と緯度を入力すると、OL はこれを WGS84 投影 (標準) と見なします。

しかし、メルカトル図法である Google レイヤー (CapaGoogle) を使用しているため、2 つの参照図法 (4326 = WGS84 AND 900913 = メルカトル) を同時に使用することになり、マップ サーバーはマーカーの位置を考慮しません。は「不正解」です。したがって、単純に (0,0) に配置します。

DrNextGISが言ったように、マップ上のすべてが同じ投影法を使用するように、「ポイント座標を変換」する必要があります。

単純な OpenLayer マップ (Google や OSM を使用しない) を使用している場合、この問題は発生しません。

于 2012-06-04T21:08:21.977 に答える