google map限制地图缩放级别和显示范围

google map限制地图缩放级别和显示范围  

2010-04-07 11:06:15|  分类: 默认分类|字号 订阅

在使用google地图的时候,很多情况下我们希望只显示地图的一部分并限制地图的缩放级别。这个时候就需要自定义google map的地图缩放级别和显示范围。

自定义地图缩放范围

控制地图的缩放级别范围需要重载GMapType的getMinimumResolution()和getMaximumResolution()方法。下面的代码将地图的缩放级别设置为12-16。

 1  function setMapResolution()
 2 {
 3      // 获取所有地图类型
 4       var mapTypes = map.getMapTypes();
 5      // 对所有地图类型限制缩放级别
 6       for( var i=0; i<mapTypes.length; i++)
 7     {
 8         mapTypes[i].getMinimumResolution =  function() {  return 12; };
 9         mapTypes[i].getMaximumResulution =  function() {  return 16; };
10     }
11 }

 

然后在加载地图后调用此函数就可以将地图的缩放级别限制为12-16。

自定义地图的显示范围

限制地图的显示范围稍微复杂一些。首先使用GLatLngBounds定义一个地图的范围。在地图拖动或移动后判断地图的中心是否移出限制的范围。如果超出范围则移动地图到限制范围内。

 //限制地图的显示范围
  function checkMapBounds(map, mapRange)
  {
      if(map)
      {
          if(mapRange.contains(map.getCenter()))
          {
              return;
          }
     
         var center = map.getCenter();
         var centerX = center.lng();
         var centerY = center.lat(); 
 
         var maxX = mapRange.getNorthEast().lng();
         var maxY = mapRange.getNorthEast().lat();
         var minX = mapRange.getSouthWest().lng();
         var minY = mapRange.getSouthWest().lat();
 
        if(centerX < minX) { centerX = minX; }
         if(centerX > maxX) { centerX = maxX; }
         if(centerY < minY) { centerY = minY; }
         if(centerY > maxY) { centerY = maxY; }
map.panTo(new google.maps.LatLng(centerY, centerX));
     }
 }

 

 然后将此方法绑定到dragend事件。在每次地图拖动结束时判断当前位置是否在限制范围之内。

  // 设置地图显示范围
  google.maps.Event.addListener(map, 'dragend',  function(){
     checkMapBounds(map, mapRangeBound);
 });

//注意 LatLng中的参数表示经度和纬度
var myLatlng1 = new google.maps.LatLng(0,0);
var mapRangeBound= new google.maps.LatLngBounds(myLatlng1, myLatlng1);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

lijun_xiao2009

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值