Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ssl/3.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 jVectorMap在setFocus上缩放地图到区域代码_Javascript_Jvectormap - Fatal编程技术网

Javascript jVectorMap在setFocus上缩放地图到区域代码

Javascript jVectorMap在setFocus上缩放地图到区域代码,javascript,jvectormap,Javascript,Jvectormap,当我将焦点设置为特定区域时,地图放大太多,我希望它更宽。代码如下: var mapObj = $("#vmap").vectorMap("get", "mapObject"); mapObj.setFocus({ region: code, animate: true }); 其中代码是一个国家的代码,如“AF”、“UK”、“IT”等 我试过这样的方法,但完全被忽略了: mapObj.setFocus({ region: code, animate: true, scale: 1.9 });

当我将焦点设置为特定区域时,地图放大太多,我希望它更宽。代码如下:

var mapObj = $("#vmap").vectorMap("get", "mapObject");
mapObj.setFocus({ region: code, animate: true });
其中代码是一个国家的代码,如“AF”、“UK”、“IT”等

我试过这样的方法,但完全被忽略了:

mapObj.setFocus({ region: code, animate: true, scale: 1.9 });

当您缩放到某个区域时,是否有办法设置不同的缩放级别?

是的,由于您提供的是区域代码,因此将忽略该级别。在“缩放选项”中提供一个或多个区域代码时,库将根据该区域的边界框自动计算缩放因子,以便该边界框完全适合贴图容器

如果需要设置自定义缩放因子,最简单的方法是指定lat/lng对,例如:

var zoomSettings = {scale: 3, lat: 41.915720, lng: 12.438120, animate: true};
mapObj.setFocus(zoomSettings);
或者,如果没有要缩放的点,并且需要缩放到某个区域,则可以获取该区域边界框的中心,并使用该中心点作为缩放点:

以下是演示:

$(文档).ready(函数(){
函数listRegionNames(映射){
var期权=”;
$.each(jvm.Map.maps[Map].路径,函数(索引,值){
选项+=''+value.name+'';
});
$(“#区域”).html(选项).change(函数(){
var mapObj=$(“#map”).vectorMap(“get”,“mapObject”);
mapObj.clearSelectedRegions();
mapObj.setSelectedRegions(此.value);
setFocus({scale:1,x:0.5,y:0.5,animate:false});
customZoomToRegion(mapObj,this.value,0.01*$(“#factor”).val());
});
}
功能customZoomToRegion(地图、代码、因子){
var bBox=map.regions[code].element.shape.getBBox();
var normRCX=(bBox.x+0.5*bBox.width)/map.defaultWidth;
var normRCY=(bBox.y+0.5*bBox.height)/map.defaultHeight;
var scale=Math.min(map.defaultWidth/bBox.width,map.defaultHeight/bBox.height);
setFocus({x:normRCX,y:normRCY,scale:scale*factor,animate:true});
}
var map=“世界工厂”;
listRegionNames(地图);
$(“#地图”).vectorMap({
地图:地图,
zoomMax:100,
地区:对,
onRegionClick:函数(e、代码、isSelected、selectedRegions){
var mapObj=$(“#”+e.target.parentElement.id).vectorMap(“get”,“mapObject”);
mapObj.clearSelectedRegions();
setFocus({scale:1,x:0.5,y:0.5,animate:false});
customZoomToRegion(mapObj,代码,0.01*$(“#因子”).val());
返回true;
}
});
});

jvectoramap标签
.jvectormap-region.jvectormap-element{
文本阴影:-1px-1px 3px#fff,1px-1px 3px#fff,-1px 1px 3px#fff,1px 1px 3px#fff;
}
缩放到:
系数:0.21.0

var regionBBox = mapObj.regions[code].element.shape.getBBox();
var normalizedRegionCX = (regionBBox.x + regionBBox.width / 2) / mapObj.defaultWidth;
var normalizedRegionCY = (regionBBox.y + regionBBox.height / 2) / mapObj.defaultHeight;
mapObj.setFocus({x: normalizedRegionCX, y: normalizedRegionCY, scale: 1.9, animate: true});