打开第 2 层从 Ajax 响应中创建特征并将其添加到矢量图层

Open Layers 2 Creating and adding Feature to Vector Layer from Ajax Response

如标题所示,创建特征并将其添加到已创建的矢量图层中。我正在从服务器获取 GeoJSON 并尝试以某种方式添加到矢量图层,但我无法让它工作......所以基本上我在问如何从我的 GeoJSON 获取 Feature 元素,以便我可以将它添加到矢量图层。 我目前拥有的..

这是我从服务器获取的 GeoJSON :

{"type":"MultiPolygon","coordinates":[[[[20.5629940201429,48.9488601183337],[20.5630121528311,48.9489447276126],[20.563289335522,48.9489141101973],[20.563260061873,48.9488286413488],[20.5629940201429,48.9488601183337]]]]}

接下来我在 JavaScript 中有 addVector 函数,我正在尝试魔术。(变量 GeoJS 是从服务器获取的 GeoJSON)

function addVector(geoJS){
    var feature = new OpenLayers.Feature.Vector( new OpenLayers.Geometry.MultiPolygon(geoJS) );
    vector = new OpenLayers.Layer.Vector("Magic"); 
    map.addLayer(vector);
    vector.addFeatures([feature]);
}

是的,我知道我创建功能的第二行是错误的,但我不能把它改正,所以我想我现在写的 id 并不重要...... 我用 var feature = new OpenLayers.Feature.Vector(new OpenLayers.Geometry.Point(-70.702451, 42.374473); 试了一下,它在地图上的工作位置不是我想要的位置,但我知道我必须用投影做点什么……现在没关系了。

顺便说一句,我有这个

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

这很有效,位置就是我想要的位置,它非常完美,除了它只在我向我的域发出请求时有效,而我尝试访问的服务器在另一个服务器上(我知道我可以设置 headers它会起作用)但我不想这样做。

所以基本上我是在问如何从我的 GeoJSON 中获取特征。我是 OpenLayers 的新手,所以如果我问的问题很明显,我很抱歉。

要使用the official example的简化版本:

var inputGeoJson = '...some-GeoJSON-here...';
var geojson_format = new OpenLayers.Format.GeoJSON();
var vector_layer = new OpenLayers.Layer.Vector();
map.addLayer(vector_layer);
vector_layer.addFeatures(geojson_format.read(inputGeoJson));

您可以在 GeoJSON class documentation 中找到更多详细信息。