Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/418.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在传单中逐渐放大,javascript_Javascript_Leaflet - Fatal编程技术网

如何在传单中逐渐放大,javascript

如何在传单中逐渐放大,javascript,javascript,leaflet,Javascript,Leaflet,我也使用了传单和geojson vt来显示地图,以及矢量图中的一些线条。我在geojson vt中做了一些修改,因为我需要在分片时添加一些我的函数。 当我从zoom 1开始缩放传单贴图,然后通过鼠标滚轮增加缩放,例如zoom=15时,一切正常。但是当我用zoom=例如7启动地图时,出现了一个问题 var leafletMap = L.map('map').setView([52.00, 19.64], 7); 因为向量块不是从0到7计算的,而是仅在7,所以“我的函数”不起作用 我认为解决方

我也使用了传单和geojson vt来显示地图,以及矢量图中的一些线条。我在geojson vt中做了一些修改,因为我需要在分片时添加一些我的函数。 当我从zoom 1开始缩放传单贴图,然后通过鼠标滚轮增加缩放,例如zoom=15时,一切正常。但是当我用zoom=例如7启动地图时,出现了一个问题

var leafletMap = L.map('map').setView([52.00, 19.64], 7);  
因为向量块不是从0到7计算的,而是仅在7,所以“我的函数”不起作用

我认为解决方案是从缩放0开始映射,然后在循环中将缩放增加到7。但是我不知道怎么做

我试过这个,但它不能与多个缩放

setTimeout(function() {
    leafletMap.setZoom(2);       
}, 300);
...
setTimeout(function() {
    leafletMap.setZoom(7);       
}, 300);

下面是一个演示如何逐渐放大的示例。代码的部分问题在于,您使用相同的延迟调用了sequential
setTimeout
方法,因此它们将一个接一个地执行。如果更改毫秒使其增加(
300
600
900
,…),则您将实际看到动画缩放

这是一个使用OSM磁贴而不是geojson vt的快速示例,因此在浏览器缓存磁贴之前,它看起来有点笨重。但是,使用geojson vt,您可以创建自己的本地向量块,因此它应该更平滑一些

但是,我不确定这是否能解决您的问题,因为您没有在geojson-vt中显示更改的代码。这可能是因为
setZoom()
没有触发您的函数,但在您显示这些自定义函数之前,您将很难获得问题的正确答案

var zoomDelayMs=600;//动画延迟毫秒
var-maxZoom=18;
var=7;
//创建地图
var map=L.map('map').setView([39.5,-0.5],initialZoom);
//设置OSM层
var baseLayer=L.tileLayer(
'http://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png'{
maxZoom:maxZoom
}).addTo(地图);
//从initialZoom逐渐放大到maxZoom的函数
slowZoom=函数(){
//将缩放重置为默认值
var zoom=initialZoom;
map.setZoom(缩放);
//如果已经处于慢速缩放中,请停止
if(map.zoomtimer)clearInterval(map.zoomtimer);
//每缩放一个级别,放大一个级别
map.zoomtimer=setInterval(函数(){
如果(缩放<最大缩放)
map.setZoom(++zoom);
否则{
clearInterval(map.zoomtimer);
map.zoomtimer=0;
}
},zoomDelayMs);
}
#地图{
高度:400px;
}
输入{
字号:1.6em;
}

下面是一个示例,演示如何逐渐放大。代码的部分问题在于,您使用相同的延迟调用了sequential
setTimeout
方法,因此它们将一个接一个地执行。如果更改毫秒使其增加(
300
600
900
,…),则您将实际看到动画缩放

这是一个使用OSM磁贴而不是geojson vt的快速示例,因此在浏览器缓存磁贴之前,它看起来有点笨重。但是,使用geojson vt,您可以创建自己的本地向量块,因此它应该更平滑一些

但是,我不确定这是否能解决您的问题,因为您没有在geojson-vt中显示更改的代码。这可能是因为
setZoom()
没有触发您的函数,但在您显示这些自定义函数之前,您将很难获得问题的正确答案

var zoomDelayMs=600;//动画延迟毫秒
var-maxZoom=18;
var=7;
//创建地图
var map=L.map('map').setView([39.5,-0.5],initialZoom);
//设置OSM层
var baseLayer=L.tileLayer(
'http://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png'{
maxZoom:maxZoom
}).addTo(地图);
//从initialZoom逐渐放大到maxZoom的函数
slowZoom=函数(){
//将缩放重置为默认值
var zoom=initialZoom;
map.setZoom(缩放);
//如果已经处于慢速缩放中,请停止
if(map.zoomtimer)clearInterval(map.zoomtimer);
//每缩放一个级别,放大一个级别
map.zoomtimer=setInterval(函数(){
如果(缩放<最大缩放)
map.setZoom(++zoom);
否则{
clearInterval(map.zoomtimer);
map.zoomtimer=0;
}
},zoomDelayMs);
}
#地图{
高度:400px;
}
输入{
字号:1.6em;
}


能否显示在geojson vt中更改的代码,或者至少显示自定义函数和调用它们的代码?我不确定简单地设置缩放动画是否会导致函数执行,因此可能无法在每个缩放级别绘制正确的向量层。能否显示在geojson vt中更改的代码,或者至少显示自定义函数和调用它们的代码?我不确定简单地设置缩放动画是否会导致函数执行,因此可能无法在每个缩放级别绘制正确的矢量层。