Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/442.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
Google将JavaScriptAPI-fitbounds与setCenter映射在一起_Javascript_Google Maps_Google Maps Api 3_Fitbounds - Fatal编程技术网

Google将JavaScriptAPI-fitbounds与setCenter映射在一起

Google将JavaScriptAPI-fitbounds与setCenter映射在一起,javascript,google-maps,google-maps-api-3,fitbounds,Javascript,Google Maps,Google Maps Api 3,Fitbounds,我一直在寻找解决这个问题的方法,但似乎找不到解决这个问题的方法。最接近我的是。但这不起作用 我试图做的是基于一组工作正常的标记运行fitbounds。但我也希望基于用户位置(plunk中的反弹标记)将地图居中,并且仍然将所有标记保留在地图视图中。 如果尝试在fitBounds后设置中心,则某些标记位于地图视图之外。 有什么巧妙的方法可以将这两个功能结合起来吗? 谢谢 简单解决方案:将您的“用户标记”添加到边界,进行调整边界,然后将结果的缩放比例减少1,并以该标记为中心 bounds.ext

我一直在寻找解决这个问题的方法,但似乎找不到解决这个问题的方法。最接近我的是。但这不起作用

我试图做的是基于一组工作正常的标记运行fitbounds。但我也希望基于用户位置(plunk中的反弹标记)将地图居中,并且仍然将所有标记保留在地图视图中。 如果尝试在fitBounds后设置中心,则某些标记位于地图视图之外。 有什么巧妙的方法可以将这两个功能结合起来吗?


谢谢

简单解决方案:将您的“用户标记”添加到边界,进行调整边界,然后将结果的缩放比例减少1,并以该标记为中心

  bounds.extend(userCenterMarker.getPosition());
  map.fitBounds(bounds);

  google.maps.event.addListenerOnce(map,'bounds_changed', function() {
        map.setZoom(map.getZoom()-1);
  });


更复杂的解决方案:以“用户标记”为中心,检查标记边界是否完全包含在地图的当前边界中(
map.getBounds().contains(markerBounds)
),如果没有,则将缩放级别降低1。

以上答案对我不起作用。以下是我们所做的:

contained = true;
map.fitBounds(bounds);
map.setCenter(center);
newbounds = map.getBounds();
for (i = 0; i < l; i ++) {
  if (!newbounds.contains(markers[i].getPosition())) {
    contained = false;
  }
}
if (!contained) map.setZoom(map.getZoom() - 1);
contained=true;
映射边界(bounds);
地图设置中心(中心);
newbounds=map.getBounds();
对于(i=0;i
谢谢@goecodezip!我将尝试提供的两种方法。我认为更复杂的一个更适合我的情况。我不知道你能做。包含(边界),只是。包含。(标记)。看起来很有希望!,确实可以将bounds类传递到.contains函数中吗?这对我来说是个例外。查看API文档,它说bounds.contains()接受一个latlng,而不是bounds类。
contained = true;
map.fitBounds(bounds);
map.setCenter(center);
newbounds = map.getBounds();
for (i = 0; i < l; i ++) {
  if (!newbounds.contains(markers[i].getPosition())) {
    contained = false;
  }
}
if (!contained) map.setZoom(map.getZoom() - 1);