打开图层2从Ajax响应中创建向向量层添加要素并将其添加到

时间:2015-11-11 23:51:56

标签: javascript ajax openlayers geojson

作为标题建议,创建功能并将其添加到已创建的矢量图层。我从服务器获取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()
                        })
});

这是有效的,位置是我想要的地方,它的完美除了它只有在我的域上发出请求时才有效,而我尝试到达的服务器是在另一个上面(我知道我可以设置标题并且它可以工作)但是我不想这样做。

所以基本上我问的是如何从我的GeoJSON获取功能。我是OpenLayers的新手,所以如果我问一些明显的东西,我很抱歉。

1 个答案:

答案 0 :(得分:2)

使用简化版the official example

PROTECT()

您可以在GeoJSON class documentation

中找到更多详细信息