Google地图:计算div覆盖未涵盖的位置

时间:2016-09-06 20:26:24

标签: javascript twitter-bootstrap google-maps google-maps-api-3 google-maps-markers

以下情况:

  • 我的谷歌地图div占据整个屏幕(100%宽度和高度)
  • 按钮切换占据地图右侧的div叠加层(侧边栏)的可见性
  • 地图上的标记可隐藏在白色叠加层下方
  • 为避免标记被隐藏,我想将地图向右移动,以便标记在框左侧黄色区域的中心可见
  • 该页面是bootstrap + angular based

enter image description here

碰撞复选框与标记不是问题,但我无法使其工作以相应地移动地图。

这就是我的尝试:

google.maps.event.addListenerOnce($scope.map, "projection_changed", function() {
    $scope.projection = $scope.map.getProjection();
});

var sidebar = document.getElementById('sidebar');
var rect = sidebar.getBoundingClientRect();

var marker = $scope.mainmarker.getPosition();
marker = $scope.projection.fromLatLngToPoint(marker); 
marker.x = rect.left / 2;
marker = $scope.projection.fromPointToLatLng(marker);
$scope.map.setCenter(marker);

但是从我看到的地图移动太远了。

1 个答案:

答案 0 :(得分:0)

我解决了这个对我有用的解决方案:

   if (underneath === true) {
        var marker = $scope.mainmarker.getPosition();
        var pixelpoint = $scope.projection.fromLatLngToPoint(point);
        pixelpoint.x += 250 / Math.pow(2, $scope.map.getZoom());
        point = $scope.projection.fromPointToLatLng(pixelpoint);
        $scope.map.setCenter(point);
    }