打开第 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 中找到更多详细信息。
如标题所示,创建特征并将其添加到已创建的矢量图层中。我正在从服务器获取 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 中找到更多详细信息。