Mapbox,无法在jquery回调中设置GeoJSON


Mapbox, cannot setGeoJSON in jquery callback

我想通过Jquery从数据库中检索一些geojson点数据(即在地图中设置一些标记)。

function remm(id){
$.ajax({
    type: "POST",
    url:"geojson2.php",
    data:{
        u_id:id[0],
        t_id:id[2]
    },
    success: function(geo,status){
        myLayer.setGeoJSON([geo]);
        console.log(geo);
    }
  });
}

在GeoJSON Lint中测试从geojson2.php检索的点数据时,它运行得非常好。但是,当调用myLayer.setGeoJSON()函数时,它只带走所有现有的标记。myLayer在javascript文件的开头被实例化,看起来像:

    L.mapbox.accessToken = 'key';
    var map = L.mapbox.map('map', 'mapbox.streets').setView([40, 0], 1);
    var myLayer = L.mapbox.featureLayer().addTo(map);

由于它从映射中删除了所有标记,因此myLayer似乎不适用于ajax中的回调函数。可能是什么问题,我缺少什么?

.setGeoJSON方法取代了GeoJSON——它设置的是GeoJSON,而不是添加单独的功能。如果您想添加新功能而不是替换现有内容,我建议您使用jQueryL.mapbox.featureLayer方法为正在加载的功能创建一个新层,并将其添加到地图中。