Javascript 如何检测磁贴服务器正确返回的磁贴,但显示;“无地图数据”;
我知道传单平铺层的Javascript 如何检测磁贴服务器正确返回的磁贴,但显示;“无地图数据”;,javascript,leaflet,Javascript,Leaflet,我知道传单平铺层的tileerror事件,但如果平铺只是一个带有“无地图数据”免责声明的虚拟平铺,则不会触发该事件 var-map=L.map(“map”).setView([52.21581894148382,2.74709701538086],14); var layer=L.tileLayer('https://server.arcgisonline.com/ArcGIS/rest/services/World_Imagery/MapServer/tile/{z} /{y}/{x}'{
tileerror
事件,但如果平铺只是一个带有“无地图数据”免责声明的虚拟平铺,则不会触发该事件
var-map=L.map(“map”).setView([52.21581894148382,2.74709701538086],14);
var layer=L.tileLayer('https://server.arcgisonline.com/ArcGIS/rest/services/World_Imagery/MapServer/tile/{z} /{y}/{x}'{
属性:“Tiles©;Esri—来源:Esri、i-cubed、美国农业部、美国地质勘探局、AEX、GeoEye、Getmapping、Aerogrid、IGN、IGP、UPR-EGP和GIS用户社区”
});
图层。添加到(地图);
layer.on(“tileerror”,function()){
log(“尝试加载时间段时出错…”);
});代码>
#地图{高度:98vh;}
如果我理解正确,您的互动程序服务器有时会返回技术上正确的互动程序图像,但其内容表示实际上没有在其上呈现有用的数据,例如:
Tiles©Esri-来源:Esri、i-cubed、美国农业部、美国地质勘探局、AEX、GeoEye、Getmapping、航空网格、IGN、IGP、UPR-EGP和GIS用户社区
您希望在传单瓷砖层获得此类瓷砖时收到通知,方式与事件类似
由于瓷砖在技术上是正确的,不幸的是,传单无法理解其上实际上没有任何有用的数据
但是,如果磁贴服务器总是返回完全相同的内容,则可以很好地与已知没有数据的磁贴进行图像比较
侦听平铺层的事件,以便在加载新平铺时附加回调
将平铺图像与您知道的对应于“无有用数据”状态的图像进行比较。你可以使用,但是有很多其他的库可以完成这样的任务
如果图像相等,则执行一些操作,例如触发新事件
(打开浏览器开发人员控制台以查看以下代码段的效果)
var-map=L.map(“map”).setView([52.21581894148382,2.74709701538086],14);
var layer=L.tileLayer('https://server.arcgisonline.com/ArcGIS/rest/services/World_Imagery/MapServer/tile/{z} /{y}/{x}'{
属性:“Tiles©;Esri—来源:Esri、i-cubed、美国农业部、美国地质勘探局、AEX、GeoEye、Getmapping、Aerogrid、IGN、IGP、UPR-EGP和GIS用户社区”,
crossOrigin:true//需要能够在画布上下文中分析图像。
}).addTo(地图);
var nodatatile=document.getElementById('nodatatile');
// 1. 收听平铺层的“tileload”事件。
// http://leafletjs.com/reference-1.3.0.html#gridlayer-蒂莱罗德
// http://leafletjs.com/reference-1.3.0.html#tileevent
层上('tileload',函数(tileEvent){
var tile=tileEvent.tile;
var c=tileEvent.coords;
//2.将磁贴与没有有用数据的已知磁贴进行比较。
// https://github.com/HumbleSoftware/js-imagediff/
var IsequalToNodeata=图像差异相等(节点数据,分幅);
//3.如果它们相等,则执行一些操作,例如触发新事件。
if(等质量节点数据){
层火('tilenodata',tileEvent);
}
});
//聆听新事件。
layer.on('tilenodata',函数(tileEvent){
var c=tileEvent.coords;
console.log(“+c.x+'/'+c.y+'/'+c.z”没有数据);
});代码>
#地图{
高度:98vh;
}