4

这是我第一次使用 OpenLayers,我不明白我做错了什么。

我尝试显示从 GeoJSON 解析的一个简单点。数据似乎被正确解析(我用控制台检查过),但无论我给出什么点,它总是显示在我猜想是矢量图层上的 LonLat(0,0) 的位置。

我究竟做错了什么 ?

var 地图,baseLayer,placesLayer,geojsonParser;
// 下面的数据已被简化和重新格式化以增强可读性
var geojsonData =
{
    “类型”:“特征”,
     “几何学”:
     {
        “类型”:“点”,
        “坐标”:[-4.0280599594116,5.3411102294922]
     },
     “特性”:
     {
        “身份证”:273,
        “名称”:“阿比让”
     }
};

$(文档).ready(函数(){

map = new OpenLayers.Map('map');
  baseLayer = new OpenLayers.Layer.OSM();
  地方层 = 新的 OpenLayers.Layer.Vector();

  geojsonParser = new OpenLayers.Format.GeoJSON();
  placesLayer.addFeatures(geojsonParser.read(geojsonData));

  map.addLayers([baseLayer,placesLayer]);
  地图.setCenter(
    新的 OpenLayers.LonLat(-4, 5.3).transform(
      新的 OpenLayers.Projection("EPSG:4326"),
      map.getProjectionObject()
    ), 5
  );

}); // 文件准备好
4

2 回答 2

7

这是正确的解决方案:

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

来源:https ://gist.github.com/1118357

于 2012-07-31T15:27:04.607 回答
3

嗨,听起来您需要将长/纬度坐标转换为正确的显示坐标:

您可以声明投影,然后转换几何特征:

var projWGS84 = new OpenLayers.Projection("EPSG:4326");
var proj900913 = new OpenLayers.Projection("EPSG:900913");

feature.geometry.transform(projWGS84, proj900913);

或者像这样“即时”获取地图投影:

var projWGS84 = new OpenLayers.Projection("EPSG:4326");    
feature.geometry.transform(projWGS84, map.getProjectionObject());

显然,如果您使用与我不同的输入投影,请将“ESPG:4326”更改为您需要的任何内容。

高温高压

C

编辑:

在您的情况下,您需要编写如下内容:

geojsonData.geometry.transform(projWGS84, map.getProjectionObject());
于 2011-06-23T10:50:32.213 回答