我想删除Mapbox地图上的源和图层。我设法删除了除了我添加到Mapbox地图的第一个源和图层以外的所有源和图层。
请注意,我不擅长使用jQuery $ .post。
以下是我添加所有源和图层的方法。
$.post('ajax/marker.php', function(data)
{
var firstSplit = data.split(",");
for(i=0;i<firstSplit.length-1;i++)
{
var secondSplit = firstSplit[i].split("|");
var id = secondSplit[0];
var lat = secondSplit[1];
var lng = secondSplit[2];
var point = {
"type": "Point",
"coordinates": [lat, lng]
};
map.addSource(id, { type: 'geojson', data: point });
map.addLayer({
"id": id,
"type": "symbol",
"source": id,
"layout": {
"icon-image": "airport-15"
}
});
}
});
请记住,我设法查看Mapbox地图上的所有来源和图层。 只是我无法删除我添加到地图中的第一个源和图层。我希望有人对这个问题有一些想法。感谢。
我在循环中使用了以下两个语句来删除源和层。
map.removeSource(id);
map.removeLayer(id);
我做了一个测试,手动删除第一个源和图层,如下所示,但它不起作用。
map.removeSource('1612280004A');
map.removeLayer('1612280004A');
但是,它适用于下一个源和层。
答案 0 :(得分:5)
根据您发布的内容,我最好的猜测是,在仍有相关资源的情况下,您无法删除该图层。尝试颠倒两个陈述的顺序:
map.removeLayer('1612280004A');
map.removeSource('1612280004A');
答案 1 :(得分:0)
我的GeoJson共享了相同的ID。同时删除图层和源代码可以解决此问题
fab.setOnClickListener { view ->
Log.d("MainActivity", "fab click")
AWSMobileClient.getInstance().apply {
showSignIn(
this@MainActivity,
SignInUIOptions.builder().apply {canCancel(true) }.build(),
object: Callback<UserStateDetails> {
override fun onResult(result: UserStateDetails?) {
Log.d(TAG, "signin success")
}
override fun onError(e: Exception?) {
Log.d(TAG, "signin failed")
}
})
}
}
答案 2 :(得分:0)
在删除之前,请检查源和图层是否存在,例如:
if (map.getLayer('points')){
map.removeLayer('points');
}
if (map.getSource('point')){
map.removeSource('point');
}