Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/476.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 如何防止GeolocateControl缩小_Javascript_Mapbox Gl Js - Fatal编程技术网

Javascript 如何防止GeolocateControl缩小

Javascript 如何防止GeolocateControl缩小,javascript,mapbox-gl-js,Javascript,Mapbox Gl Js,我正在地图盒地图中添加GeolocateControl。它工作正常并显示我的当前位置。然而,它放大了太多。默认情况下,我的地图缩放为10。但当我单击GeolocateControl时,它将移动到新的目的地并缩小。我尝试添加缩放:10,但没有运气 map.addControl( new mapboxgl.GeolocateControl({ zoom: 10, positionOptions: { enableHighAccuracy: true },

我正在地图盒地图中添加GeolocateControl。它工作正常并显示我的当前位置。然而,它放大了太多。默认情况下,我的地图缩放为10。但当我单击GeolocateControl时,它将移动到新的目的地并缩小。我尝试添加缩放:10,但没有运气

map.addControl(

    new mapboxgl.GeolocateControl({
    zoom: 10,

    positionOptions: {
    enableHighAccuracy: true
    },
    trackUserLocation: true,
   })
 );

按照文档进行操作有点复杂,但基本上不是直接在您提供的对象上执行
zoom
,而是在名为
fitbundsoptions
的对象上执行:

map.addControl(
    new mapboxgl.GeolocateControl({
        fitBoundsOptions: {
            zoom: 10,
        },
        positionOptions: {
            enableHighAccuracy: true
        },
        trackUserLocation: true,
   })
 );

为了补充这个答案,值得注意的是,根据GL JS API参考中的GeolocateControl文档,“应用的缩放级别将取决于设备提供的地理位置的准确性。”这解释了为什么单击控件会导致地图大量“缩小”。通过在fitBoundsOptions中指定缩放,可以解决此问题。要添加到Adriana的评论中,有很好的理由说明默认设置是这样的,因为如果设备仅报告城市范围内的准确度,则将其放大到城市级别之外会产生误导。