OpenLayers 2,GeoJSON 无法让坐标工作
OpenLayers 2, GeoJSON cant get coordinates to work
我正在尝试在我的地图上显示一些多边形,我是整个 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 在另一台服务器上并且它抛出错误(我知道我可以设置 headers 并且它会起作用)但我不想这样做。
这不起作用:
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));
这不起作用 - 它在不同的地方显示多边形,即使以相同的方式指定投影(或至少对我来说......)。
我解决了这个问题。创建 OpenLayers.Format.GeoJSON 时,您可以像这样指定投影...
var geojs_format = new OpenLayers.Format.GeoJSON({
'internalProjection': new OpenLayers.Projection("EPSG:900913"),
'externalProjection': new OpenLayers.Projection("EPSG:4326")
});
这解决了问题。
我正在尝试在我的地图上显示一些多边形,我是整个 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 在另一台服务器上并且它抛出错误(我知道我可以设置 headers 并且它会起作用)但我不想这样做。
这不起作用:
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));
这不起作用 - 它在不同的地方显示多边形,即使以相同的方式指定投影(或至少对我来说......)。
我解决了这个问题。创建 OpenLayers.Format.GeoJSON 时,您可以像这样指定投影...
var geojs_format = new OpenLayers.Format.GeoJSON({
'internalProjection': new OpenLayers.Projection("EPSG:900913"),
'externalProjection': new OpenLayers.Projection("EPSG:4326")
});
这解决了问题。