使用 javascript 生成 GeoJson

Generating GeoJson with javascript

我得到一个 lat/lon 数组 ajax

$.ajax({
    type: "POST",
    url: '../m/m_share.php',
    data: 'zone=' + zone,
    dataType: 'json',
    success: function(tab) {
        var i = 0;
        var size = tab.length;
        for (i = 0; i < size; i++) {
            var lat = tab[i]['lat'];
            var lon = tab[i]['lon'];
        }
    }

"tab" 参数是一个 jscon_encode(数组),由我的 lat/lon 来自 db 的请求的 php 发送。 我想做的是用我的 lat/lon 数据创建一个像这样的 geojson。

var geojson =
   {"name":"NewFeatureType",
    "type":"FeatureCollection",
    "features":[{"type":"Feature",
                 "geometry":{"type":"LineString",
                             "coordinates":[[169.13693,-44.696476,296],[169.134602,-44.69764,295],[169.129983,-44.701164,299]]},
    "properties":null}]};

我试图将 lat/lon 保存在 var

  $.ajax({
            type: "POST",
            url: '../m/m_share.php',
            data: 'zone=' + zone,
            dataType: 'json',
            success: function(tab) {
                var i = 0;
                var size = tab.length;
                for (i = 0; i < size; i++) {
                     var lat = tab[i]['lat'];
                     var lon = tab[i]['lon'];
                   if(i===size){
                      coord = coord+'['+lat+','+lon+']';
                       alert(coord);
                    }
                    else{
                      coord = coord+'['+lat+','+lon+']'+',';

                    }
                }
                }
            });

然后用我的坐标变量替换 geoJson 中的 lat/lon 但传单似乎不喜欢它 "Invalid LatLng object: (NaN, Nan)".

创建一个 geojson 对象变量。

var geojson = {
    "name":"NewFeatureType",
    "type":"FeatureCollection",
    "features":[{
        "type":"Feature",
        "geometry":{
            "type":"LineString",
            "coordinates":[]
        },
        "properties":null
    }]
};

然后你推入坐标数组

geojson.features[0].geometry.coordinates.push([lat, lng]);

Pedro Estrada 提到的方法是正确的。但需要稍作修正。

GeoJson 标准要求具有(经度、纬度)约定的地理点。

var gj = {
    "name":"MyFeatureType",
    "type":"FeatureCollection",
    "features":[]
};

推送一个新的特征对象

gj.features.push({ "type": "Feature","geometry": {"type": "LineString","coordinates": []},"properties": null });

为新推送的对象添加坐标:

lon=20;
lat=10;
gj.features[0].geometry.coordinates.push([lon,lat]);