存储在geoJSON中的点不会显示在地图上

时间:2012-02-17 17:40:14

标签: php json geospatial geojson

我有一个geoJSON文件,包含:

{
"type": "FeautureCollection",
"features": [
    {
        "type": "Feature",
        "id": "1",
        "geometry": {
            "type": "Point",
            "coordinates": [
                5.709531,
                50.855802
            ]
        }
    },
    {
        "type": "Feature",
        "id": "2",
        "geometry": {
            "type": "Point",
            "coordinates": [
                5.709426,
                50.855798
            ]
        }
    }
]
}

这个JSON文件是用php脚本构建的:

$ret = array();
$ret['type'] = "FeautureCollection";
$ret['features'] = array();

$f = array();
$f['type'] = 'Feature';
$f['id'] = $p['id'];
$f['geometry'] = array();
$f['geometry']['type'] = 'Point';
$f['geometry']['coordinates'] = array(floatval($p['lat']), floatval($p['lon']));
  $ret['features'][] = $f;

echo json_encode($ret);

当我尝试通过polymaps.org框架加载它时,没有显示任何点。 除了加载地图的标准内容之外,我使用这个javascript来解析geoJSON。

map.add(po.geoJson()
.url('geojson/c.geo.php')
.id('test')
);

CSS如下,因此这些点应该看起来像一个红圈:

#test {
      fill: lightcoral;
      fill-opacity: .5;
      stroke: brown;
    }

奇怪的是,当我将geojson文件指针改为由GIS应用程序构建的指针时,它可以工作。所以我打赌我的geoJSON已损坏。但是当我通过http://jsonlint.com/运行时,它会验证。

有人知道这是怎么回事吗?

1 个答案:

答案 0 :(得分:0)

不确定,但我认为我遇到过另一个框架的同样问题:http://leaflet.cloudmade.com/

在我的情况下,这是一个观点位置问题(例如:你的功能在美国,但你的地图显示非洲)。同样在cloudmade-leaflet中,他们使用纬度 - 经度而不是经度 - 纬度。

您可以检查地图是否查看了正确的区域。