1

フォームを使用して bbox 値を PHP スクリプトに渡し、次に bbox パラメータを使用して FeatureCollection を ajax コールバックに出力する ajax 関数を作成しようとしています。

これから、私は JSON.parse() を使用し、各機能の説明部分を対応するポイントの上にポップアップとして表示しようとしています。

コードで何が問題なのかを突き止めるために数え切れないほどの時間を費やしましたが、うまくいかないようです。

フォームの HTML は次のとおりです。

<select name="bbox" id="bbox" onchange="ajaxrequest()">
  <option name="Select" value="Select">Please Select</option>
  <option name="Hampshire" value="-1.40,50,-1.39,51&format=geojson">Hampshire</option>
</select>

ここに私のAJAX関数があります:

function ajaxrequest()
{
    var bbox = document.getElementById("bbox").value;
    //alert(bbox);
    var request = new Ajax().sendRequest
        ('points.php',
            { method: 'GET',
              parameters: 'bbox=' + bbox,
              callback: resultsReturned }
        );
}

そして、応答テキストにフィーチャ コレクション geoJSON を含む AJAX コールバックを次に示します。

function resultsReturned (xmlHTTP)
{
    //alert(xmlHTTP.responseText);
    var geojson = JSON.parse(xmlHTTP.responseText);

    for(var i=0; i<geojson.features.length; i++)
    {
        var layer = new L.geojson();
        layer.addData(geojson.features[i]);
    }
}

誰かが私を殺しているので、これを終了する方法について私に記入していただければ幸いです.

前もって感謝します。

4

2 に答える 2

1

私はあなたがこれを探していると思います:

function resultsReturned (xmlHTTP)
{
    var features = JSON.parse(xmlHTTP.responseText);
    L.geoJson(features).addTo(map);
}

( http://leafletjs.com/examples/geojson.htmlを参照)

ポップアップを各機能にバインドする場合:

function resultsReturned (xmlHTTP)
{
    var features = JSON.parse(xmlHTTP.responseText);
    L.geoJson(features, 
        { onEachFeature: 
              function(feature,layer) {
                  layer.bindPopup(feature.properties.description);
              }
        }).addTo(map);
}
于 2013-02-25T23:18:15.973 に答える
0

解決済み このコードを init 関数に追加しました。これは、AJAX コールバックが入力できるようにするために必要なため、「null」に注意してください。

layer = new L.GeoJSON( null,
    { onEachFeature: function(feature,layer)
        {
            layer.bindPopup(feature.properties.description);
        }
    }).addTo(map);

私の最初の AJAX 呼び出し関数は上記と同じで、AJAX 応答は次のようにわずかに変更されています。

function resultsReturned (xmlHTTP)
{
    //alert(xmlHTTP.responseText);
    var features = JSON.parse(xmlHTTP.responseText);

    for(var i=0; i<features.features.length; i++)
    {
        layer.addData(features.features[i]);
    }

}

コーディングの仕組みを理解するのを手伝ってくれた@flupの助けに感謝します:)

于 2013-02-26T16:44:25.643 に答える