首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >fitBounds(绑定)函数不能正常工作

fitBounds(绑定)函数不能正常工作
EN

Stack Overflow用户
提问于 2015-09-26 07:19:08
回答 1查看 287关注 0票数 0

我有以下代码:

代码语言:javascript
复制
var bound = new google.maps.LatLngBounds();
    if (arrMarkers.length > 0) {                       

                            for (var i = 0; i < arrMarkers.length; i++) {
                                bound.extend(new google.maps.LatLng(arrMarkers[i].getPosition().lat(), arrMarkers[i].getPosition().lng()));
                            }
                            strDefaultLtLong = bound.getCenter();// get center from bounds

                        }
    var image = 'Images/star.png';

                        var mapOptions = {
                            center: strDefaultLtLong,
                            mapTypeId: google.maps.MapTypeId.ROADMAP,
                            disableDoubleClickZoom: true,
                            zoom: parseInt(strDefaultZoomLevel)

                        }

                        map = new google.maps.Map(document.getElementById('map-canvas'), mapOptions);
                        if (arrMarkers.length == 1) {
                            map.setZoom(parseInt(strDefaultZoomLevel));
                        }
                        else if (arrMarkers.length > 1) {
                            map.fitBounds(bound);

                            google.maps.event.addListener(map, 'idle', function (event) {
                                if (map.getZoom() > parseInt(strDefaultZoomLevel)) {
                                    map.setZoom(parseInt(strDefaultZoomLevel));
                                }
                            });
                            google.maps.event.clearListeners(map, 'idle');

                        }

我有arrMarkers的位置列表。只有当位置有不同的位置时,fitBounds()函数才能工作,但是如果位置列表具有相同的位置(Lat&Long),则显示完全缩放的地图。

我如何处理默认缩放或特定缩放级别,以便列表将适当地显示?

谢谢..

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-09-26 09:22:01

如果标记的位置确实相等,您可以比较界的SW和NE,它们也应该相等:

代码语言:javascript
复制
//if (arrMarkers.length == 1) {
if(bounds.getSouthWest().toUrlValue()
      ===
   bounds.getNorthEast().toUrlValue()){

  map.setZoom(parseInt(strDefaultZoomLevel));

}

演示:

代码语言:javascript
复制
function init() {
        
        var goo=google.maps,
            strDefaultZoomLevel='7',
        
        map = new goo.Map(document.getElementById('map_canvas'),
            {
              zoom: parseInt(strDefaultZoomLevel),
              noClear:true
            }),
        btn=document.getElementById('btn'),
        markers=[
                          new goo.Marker({position:{lat:11.11,lng:22.22},
                                          icon:{ 
                                                  url:'http://maps.google.com/mapfiles/dir_0.png',
                                                  scaledSize:new goo.Size(48,48)
                                               }}),
                          new goo.Marker({position:{lat:11.11,lng:22.22},
                                          icon:{ 
                                                  url:'http://maps.google.com/mapfiles/dir_60.png',
                                                  scaledSize:new goo.Size(48,48)
                                               }}),
                          new goo.Marker({position:{lat:66.66,lng:77.77},
                                          icon:{ 
                                                  url:'http://maps.google.com/mapfiles/dir_0.png',
                                                  scaledSize:new goo.Size(48,48)
                                               }})
                       ];
        
        map.controls[goo.ControlPosition.BOTTOM_CENTER]
          .push(btn);
        
        goo.event.addDomListener(btn,'click',function(){
          
          for(var i=0;i<markers.length;++i){
            markers[i].setMap(null);
          }
          this.value=(this.value==='draw equal markers')
                      ? 'draw different markers'
                      : 'draw equal markers';
          
          
          var arrMarkers=markers.slice.apply(markers,(this.value==='draw equal markers')
                                                        ? [1,3]
                                                        : [0,2]),
              bounds=new goo.LatLngBounds();
          
          for(var i=0;i<arrMarkers.length;++i){
            arrMarkers[i].setMap(map);
            bounds.extend(arrMarkers[i].getPosition());
          }
          
          if(bounds.getSouthWest().toUrlValue()
              ===
             bounds.getNorthEast().toUrlValue()){

            map.setOptions({
                            zoom:parseInt(strDefaultZoomLevel),
                            center:bounds.getCenter()
                           }); 
          }
          else{
            map.fitBounds(bounds);
          }           
        });
        google.maps.event.trigger(btn,'click');
      
        
      }
代码语言:javascript
复制
html,body,#map_canvas{height:100%;margin:0;padding:0;}
       #btn{font:14px bold Monospace;background:tomato;margin-bottom:12px;}
代码语言:javascript
复制
<div id="map_canvas">
  <input id="btn" type="button" value="draw equal markers"/>
</div>
<script src="https://maps.googleapis.com/maps/api/js?v=3&callback=init"></script>

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32794672

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档