Leaflet.js从AJAX添加图层

时间:2014-01-28 15:14:10

标签: javascript jquery html asp.net ajax

我有一个ASP.NET网站,其中包含一个Leaflet地图的实例,该地图设置为显示数据。我有通过jQuery更改fire事件的下拉列表,这些下拉值依次获取下拉值并将它们传递给Web服务,后者从服务器检索新数据。此数据是geoJson数据,并以字符串的形式返回。尝试将此新数据应用于地图不起作用。这是代码,我知道返回的内容是正确的,我已将其输出到Div,复制并手动加载它并且工作正常。现在把头发撕掉了。

我正在输出一个div以证明它有效...

$("#MainContent_DropDownList1").change(function () {

    $.ajax({

        url: "services/AJAXMapping.asmx/GetNewData",
        dataType: "text",
        type: "POST",
        data: { species: $(this).val() },
        error: function (err) {

            alert("Error: " + err.responseText.toString())

        },
        success: function (data) {

            $("#testarea").html(data);
            geojson.clearLayers();

            geojson = L.geoJson((data), {
                style: choroStyle,
                onEachFeature: onEachFeature
            }).addTo(map);

        }
    });

});

1 个答案:

答案 0 :(得分:0)

我认为问题是你没有将你的json-string解析为一个对象。

geojson = L.geoJson((JSON.parse(data)), {
    style: choroStyle,
    onEachFeature: onEachFeature
}).addTo(map);

或者代替JSON.parse(data),您可以在使用jquery时使用$.parseJSON(data)

您还可以将ajax调用的dataType设置为json,但如果您仍想将geojson数据输出到div,则必须将数据对象转换回字符串。 您可以使用JSON.stringify(data)

执行此操作

如果这不能解决您的问题,请发布您收到的错误消息。