OpenLayers 2,GeoJSON无法获得坐标工作

时间:2015-11-13 01:58:42

标签: javascript coordinates openlayers geojson

我试图在我的地图上显示一些多边形,我是整个OpenLayers地图中的新geojson事情,所以请温柔地请:)。

首先是什么工作:

vector1 = new OpenLayers.Layer.Vector("GeoJSON1",
{
    projection       : "EPSG:4326",
    strategies       : [new OpenLayers.Strategy.Fixed()],
    protocol         :  new OpenLayers.Protocol.HTTP({
                            url: "test.php",
                            format: new OpenLayers.Format.GeoJSON()
                        })
});

这段代码可以运行,test.php中的geojson显示在服务器上,位于应该的位置。但是我尝试访问的geojson是在另一台服务器上并且它会抛出错误(我知道我可以设置标头并且它会起作用)但我不想这样做。

这不起作用:

var geojs_format = new OpenLayers.Format.GeoJSON();
var geojsval= {
                "type": "Polygon", 
                "coordinates": 
                    [[[11.0878902207, 45.1602390564], 
                      [14.931640625, 40.9228515625], 
                      [0.8251953125, 41.0986328125], 
                      [7.63671875, 48.96484375], 
                      [11.0878902207, 45.1602390564]]]
            };
vector = new OpenLayers.Layer.Vector("GeoJSON",{projection:"EPSG:4326"});
vector.addFeatures(geojs_format.read(geojsval));

这不起作用 - 它在不同的地方显示多边形,即使以相同的方式指定投影(或至少对我来说......)。

1 个答案:

答案 0 :(得分:0)

我解决了这个问题。在创建OpenLayers.Format.GeoJSON时,您可以像这样进行特定投影...

var geojs_format = new OpenLayers.Format.GeoJSON({
            'internalProjection': new OpenLayers.Projection("EPSG:900913"),
            'externalProjection': new OpenLayers.Projection("EPSG:4326")
        });

这解决了这个问题。