Хотя вопрос довольно старый, с почти 3 тыс. Просмотров, он все еще, кажется, вызывает интерес - Итак, вот мое решение:
Оберните элементы управления!
Сначала мы должны найти контейнер-элемент, куда Google помещает элемент управления. Это зависит от того, какие элементы управления мы хотим использовать на карте. Google не использует уникальные идентификаторы для этих контейнеров. Но все элементы управления имеют общий класс «gmnoprint». Так что подсчет элементов с помощью «gmnoprint» делает свою работу. Скажем, мы хотим использовать только управление "ZoomControlStyle.SMALL". Это всегда последний элемент с "gmnoprint".
Теперь мы можем просто стилизовать элемент - верно? Нет. Как только вы увеличите или измените размер карты, Google сбрасывает стили элементов управления. Не повезло, но: мы можем обернуть контейнер вокруг элементов управления и стилизовать этот контейнер!
Используя jQuery, это действительно простая задача:
$('div.gmnoprint').last().parent().wrap('<div id="newPos" />');
Нам нужно только убедиться, что элемент управления полностью загружен к тому моменту, когда мы пытаемся его обернуть. Я полагаю, что это не является пуленепробиваемым, но использование "tileloaded" от MapsEventListener делает довольно хорошую работу:
google.maps.event.addDomListener(map, 'tilesloaded', function(){
// We only want to wrap once!
if($('#newPos').length==0){
$('div.gmnoprint').last().parent().wrap('<div id="newPos" />');
}
});
Извлечение http://jsfiddle.net/jfPZH/ (не работает, см. Обновление, февраль 2016 г. )
Конечно, если вам не нравится начальное мерцание и вы хотите более надежную версию, вы можете делать все виды улучшений, таких как fadeIn и т. Д .: http://jsfiddle.net/vVLWg/ (не работает, см. Обновление, февраль 2016 г. )
Итак, я надеюсь, что некоторые из вас найдут это полезным - Веселитесь!
Обновление: с помощью этого метода вы можете также позиционировать любой другой элемент управления (например, элементы управления Drawing Library ). Вы просто должны убедиться, что выбрали правильный контейнер! Это модифицированный пример: http://jsfiddle.net/jP65p/1/ (как-то все еще работает)
Обновление : По состоянию на февраль 2016 года Google, похоже, изменил расположение элементов управления карты. Это не нарушает мое решение. Это просто нуждается в некоторой корректировке. Итак, вот обновленные скрипки:
Простой: http://jsfiddle.net/hbnrqqoz/
Необычные: http://jsfiddle.net/2Luk68w5/