【问题标题】:Generating GeoJson with javascript使用 javascript 生成 GeoJson
【发布时间】:2015-08-15 06:37:28
【问题描述】:

我得到一个带有 ajax 的 lat/lon 数组

$.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”参数是 php 发送的我从 db 的 lat/lon 请求的 jscon_encode(array)。 我想做的是使用我的纬度/经度数据创建一个像这样的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+']'+',';

                    }
                }
                }
            });

然后用我的 coord var 替换 geoJson 中的纬度/经度,但似乎传单不喜欢它“Invalid LatLng object: (NaN, Nan)”。

【问题讨论】:

  • 欢迎来到 Stack Overflow。你的问题有点含糊。你想用 PHP 创建这个geojson 吗?你是如何得到这些数据的?请编辑并添加更多详细信息。
  • 谢谢,我编辑了应该会更好

标签: javascript php ajax json geojson


【解决方案1】:

创建一个 geojson 对象变量。

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

然后你推入坐标数组

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

【讨论】:

  • 感谢您的回答,这似乎是正确的举动,但我无法使其工作,因为它一直返回此错误无法读取未定义的属性“几何”
  • @JChri "features":[{ 是一个数组,在该数组的第一个索引中有一个对象。因此,必须像这样引用它,geojson.features[0].geometry。如果它是这样写的:"features":{ 没有[ 那么它应该像这样引用:geojson.features.geometry
  • @JChri 请在你的 OP 中告诉我你做了什么来得到那个错误,或者如果你可以请创建一个 JSFIDDLE,我们可以解决这个问题。
【解决方案2】:

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]);

【讨论】:

    猜你喜欢
    • 2019-04-30
    • 2012-11-25
    • 2019-08-11
    • 2018-12-03
    • 1970-01-01
    • 2012-01-04
    • 1970-01-01
    • 2011-11-27
    • 1970-01-01
    相关资源
    最近更新 更多