使用Google Map API地面覆盖防止地图水平跳跃/滑动

时间:2015-03-19 15:25:19

标签: google-maps google-maps-api-3

全部, 我是Google Map API的新手。我想在Google地图上显示一些图片。我想使用GroundOverlay,因为以后在我的工作中更容易实现动画效果。

问题是图像会在“世界瓷砖”之间水平跳跃。特别是当我拖动地图交叉-180度和180度。只有部分屏幕显示图像,这很烦人。这是一个截图:

Error Screenshot

有人知道如何防止这种情况吗?其实我想复制行为: http://forevermore.net/articles/photo-zoom/

我想如果我可以限制地图的左右边界,那么图像就不会水平扭曲。但上面显示的示例基于tile重叠而不是GroudOverlay。使用GroundOverlay实现行为的任何想法?

1 个答案:

答案 0 :(得分:0)

你可以试试这个:

google.maps.event.addListener(map,'center_changed',function() { checkBounds(); });

var allowedBounds = new google.maps.LatLngBounds(
     new google.maps.LatLng( , ),         //add your lat/long 
     new google.maps.LatLng( , )          //add your lat/long 
);

function checkBounds() {    
    if(! allowedBounds.contains(map.getCenter())) {
      var C = map.getCenter();
      var X = C.lng();
      var Y = C.lat();

      var maxX = allowedBounds.getNorthEast().lng();
      var maxY = allowedBounds.getNorthEast().lat();
      var minX = allowedBounds.getSouthWest().lng();
      var minY = allowedBounds.getSouthWest().lat();

      if (X < minX) {X = minX;}
      if (X > maxX) {X = maxX;}
      if (Y < minY) {Y = minY;}
      if (Y > maxY) {Y = maxY;}

      map.setCenter(new google.maps.LatLng(Y,X));
    }
}