Поместите pegman Google Maps под маркерами - PullRequest
1 голос
/ 20 февраля 2012

У меня есть карта Google V3, которая использует steetView и некоторые маркеры карты. Маленький желтый пегман StreetView сидит на карте в верхней части маркеров. Есть ли способ изменить z-индексы так, чтобы мои маркеры были выше пегмана (чтобы их можно было легко нажимать без увеличения)?

В случае, если что-то не понятно, вот скрипка .... http://jsfiddle.net/spiderplant0/BRkCA/

После небольшого количества экспериментов я придумал это ...

$("#map_canvas img[src*=cb_scout]").parent("div").css({'zIndex': -200});
$($("#map_canvas img[src*=cb_scout]")[1]).parent("div").parent("div").css({'zIndex': -200});

Это заставляет пегмена сидеть под маркерами, но теперь пегман больше не перетаскивается, и каждый раз, когда карта перемещается и т. Д., Пегман снова прыгает выше маркеров.

Ответы [ 3 ]

2 голосов
/ 29 марта 2012

Чтобы держать pegman под вашими маркерами, вы можете следить за событием pov_changed и сбрасывать z-индекс после небольшой задержки

$google.maps.event.addListener(panorama, 'pov_changed', function() {
    var func=function(){
        $("#map_canvas img[src*=cb_scout]").parent("div").css({'zIndex': -200});
    }
    setTimeout(func,1000);
    }
});

Вам также потребуется изменить глубину пегмана после перемещения карт, что можно сделать с помощью следующего фрагмента

google.maps.event.addListener(map, 'idle', function() {
                google.maps.event.trigger(panorama, 'pov_changed');
    })

Если вы хотите иметь возможность перетаскивать пегмана, вы должны сначала поместить его над маркерами, переключив глубину пегмана, переключив глубину пегмана, и добавив исключение в обработчик событий pov_changed, не позволяющий язычнику сбрасывать глубины, когда кнопка переключения активен.

0 голосов
/ 02 марта 2015

Вы можете установить zIndex маркера над google.maps.Marker.MAX_ZINDEX, чтобы пегман оставался под маркером. MAX_ZINDEX - это максимальный z-индекс по умолчанию, который API будет назначать для маркера. Z-индексы маркеров работают только тогда, когда оптимизации отключены на всех маркерах на карте.

Разветвленная скрипка из вопроса для иллюстрации: http://jsfiddle.net/brendaz/t4v8nhoq/

    var marker1 = new google.maps.Marker({
      position: new google.maps.LatLng(54.975, -2.020),
      map: map,
      zIndex: google.maps.Marker.MAX_ZINDEX + 1,
      optimized: false
    });
0 голосов
/ 24 марта 2012

Хорошо, это может быть немного хакерски ... (и я надеюсь, что я понял, что вы делали)

1) Отключить элемент управления просмотром улиц 2) Создайте другой элемент управления с более низким zIndex, чем маркер, который выиметь.3) Обновить элемент управления просмотром улиц, указав положение фальшивого маркера просмотра улиц.

http://jsfiddle.net/z7Lp8/

...