在同一位置更改Google地图控件的顺序(即RIGHT_TOP)

时间:2011-02-10 15:51:25

标签: javascript google-maps

我需要重新安排Google Map(v3,3.4)API中的默认控件。

一切都到位并且有效,但是当我添加 mapTypeControl zoomControl streetViewControl panControl 到相同的 ControlPosition (即google.maps.ControlPosition.RIGHT_TOP),我无法定义它们的呈现顺序。

mapTypeControl 的默认值为TOP_RIGHT,但是将其更改为RIGHT_TOP(上面提到的其他默认值)会将其添加到此位置的底部:

google maps controls

这是地图选项的代码(永远不要添加OSM图层):

var mapOptions = {
zoom: 12,
center: def_center, // is set before this snippet    
mapTypeControl: true,
mapTypeId: user_maptype, // is set before this snippet
mapTypeControlOptions: {
    position: google.maps.ControlPosition.RIGHT_TOP,
    mapTypeIds: [google.maps.MapTypeId.ROADMAP, google.maps.MapTypeId.SATELLITE, google.maps.MapTypeId.HYBRID, google.maps.MapTypeId.TERRAIN, "openstreetmap"]
},
zoomControl: true,
zoomControlOptions: {
    style: google.maps.ZoomControlStyle.DEFAULT,
    position: google.maps.ControlPosition.RIGHT_TOP
},
streetViewControl: true,
streetViewControlOptions: {
        position: google.maps.ControlPosition.RIGHT_TOP
},
panControl: false,
panControlOptions: {
        position: google.maps.ControlPosition.RIGHT_TOP
},
scaleControl: false,
scaleControlOptions: {
        position: google.maps.ControlPosition.BOTTOM_RIGHT
}
};

我需要将 mapTypeControl 作为第一个要渲染的元素(在streetViewControl之上)。知道怎么做吗?

2 个答案:

答案 0 :(得分:6)

此代码在Google代码编辑器@ http://code.google.com/apis/ajax/playground/#control_position_v3

中正常运行

最后解决方案是使用TOP_RIGHT而不是RIGHT_TOP

此外,index属性可以通过setAttribute更改,就像大多数其他属性一样。

function initialize() {
   var mapDiv = document.getElementById('map-canvas');
   var map = new google.maps.Map(mapDiv, {
      center: new google.maps.LatLng(37.4419, -122.1419),
      zoom: 13,
      mapTypeId: google.maps.MapTypeId.ROADMAP,
      mapTypeControl: true,
      mapTypeControlOptions: { 
         position: google.maps.ControlPosition.TOP_RIGHT
      }, 
      zoomControl: true, 
      zoomControlOptions: { 
         style: google.maps.ZoomControlStyle.DEFAULT, 
         position: google.maps.ControlPosition.RIGHT_TOP 
      }, 
      streetViewControl: true, 
      streetViewControlOptions: { 
         position: google.maps.ControlPosition.RIGHT_TOP 
      }, 
      panControl: false, 
      panControlOptions: { 
         position: google.maps.ControlPosition.RIGHT_TOP 
      }, 
      scaleControl: false, 
      scaleControlOptions: { 
         position: google.maps.ControlPosition.BOTTOM_RIGHT 
      } 
   });
}

答案 1 :(得分:1)

不幸的是,我确实没有解决方案,但是根据这个页面 Google Map API V3 Controls用户定义的控件可以通过更改DOM中的索引放在默认控件之前。这可能是同样的问题,变焦控制的指数低于地图/卫星控制吗? 不确定如何改变索引,但它可能是找到解决方案的途径。

哦,如果您确实知道如何解决它,请在此处粘贴您的解决方案。可能会派上用场。