Изменить порядок элементов управления Google Map в том же месте (например, RIGHT_TOP) - PullRequest
9 голосов
/ 10 февраля 2011

Мне нужно изменить стандартные элементы управления в API Google Map (v3, 3.4).

Все работает и работает, но когда я добавляю 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 ]

6 голосов
/ 04 июня 2012

Этот код прекрасно работает в редакторе кода 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 голос
/ 05 мая 2011

У меня, к сожалению, нет решения, но, согласно этой странице Элементы управления API Google Map V3 пользовательские элементы управления могут быть размещены перед элементами по умолчанию, изменив их индекс в DOM.Может быть, это та же проблема, что у элемента управления масштабированием индекс ниже, чем у элемента управления map / satelite?
Не уверен, как бы вы изменили индекс, но это может быть способом найти решение.

Да, и если вы все же узнаете, как ее решить, пожалуйста, вставьте свое решение здесь.Может пригодиться.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...