Как я могу выровнять кнопку streetViewControl (pegman), чтобы она была смежной / встроенной в mapTypeControl?
Это моя карта_Опции
var mapOptions = {
zoom: 19,
minZoom: 5,
noClear: false,
panControl: false,
scaleControl: true,
mapTypeControl: true,
mapTypeControlOptions: {
style: google.maps.MapTypeControlStyle.VERTICAL_BAR,
position: google.maps.ControlPosition.RIGHT_BOTTOM
},
streetViewControl: true,
streetViewControlOptions: {
style: google.maps.MapTypeControlStyle.VERTICAL_BAR,
position: google.maps.ControlPosition.RIGHT_BOTTOM
},
zoomControl: true,
zoomControlOptions: {
style: google.maps.ZoomControlStyle.SMALL,
position: google.maps.ControlPosition.TOP_RIGHT
},
overviewMapControl: true,
rotateControl: false,
mapTypeId: google.maps.MapTypeId.HYBRID //ROADMAP, SATELLITE, HYBRID, TERRAIN
,controlSize: 30
};
Мне удалось сделать это действительно ужасно следующим образом.
// move the streetViewControl(pegman) to the left of mapTypeControl in a very ugly way
google.maps.event.addListenerOnce(map, 'idle', function () {
setTimeout(function () {
var mapTypeControlObj = $("div[title='Show street map']").closest('.gmnoprint');
var streetViewPegmanObj = $('.gm-svpc');
$(streetViewPegmanObj).appendTo(mapTypeControlObj);
streetViewPegmanObj.css("left", "-29px");
mapTypeControlObj.css("bottom", "10px");
}, 1000)
});
, что приводит к хорошему результату
Но как только я увеличу или уменьшу масштаб, он подскочит следующим образом:
Что я компенсирую в слушателе "zoom_changed" следующим образом
google.maps.event.addListener(map, 'zoom_changed', function () {
usrMapEventZoomChanged();
setTimeout(function () {
$("div[title='Show street map']").closest('.gmnoprint').css("bottom", "10px");
}, 500)
});
Но все же при увеличении / уменьшениинесколько раз вскакивает и затем исправляет себя.
Есть ли элегантный способ достичь этого без таких манипуляций, как я делал выше?