2013-03-27 4 views
1

У меня есть карта google и маркер на ней.Google maps V3: предотвратить масштабирование маркера

Мне нужно, чтобы маркер был фиксированным размером, например, 10x10 пикселей, и возвращал то же самое, даже если я увеличиваю или уменьшаю масштаб.

Это то, что я есть сейчас (и не workig):

var marker = new google.maps.Marker({ 
    position: circleCenter, 
    map: googleMap, 
    icon: { 
     path: google.maps.SymbolPath.CIRCLE, 
     fillOpacity: 0.5, 
     fillColor: 'ff0000', 
     strokeWeight: 10, 
     size: 5 
    } 
}); 

можно заблокировать маркер масштабирования его размер Является ли это, когда масштаб карты изменяется?

+0

ли пригодился этот ответ? http://stackoverflow.com/a/13385598/875127 –

+0

Благодарим вас за ссылку. Pff ... я надеялся на решение из коробки, как простое свойство. Я сделаю браузер очень медленным, если я добавлю этот обратный вызов, и если у меня будет около 30 маркеров на карте :( – Catalin

+0

Да, я не знаю более простого метода. Было бы неплохо, хотя! Не думаю, что 30 маркеров будут быть слишком страшным ... –

ответ

0

У Google нет готового способа остановить маркеры от масштабирования.

Вы можете использовать Ground Overlay, чтобы установить фиксированную область на карте, а затем прикрепить изображение. Трюк с наземными наложениями - вы должны знать координаты объекта bounds, и вам, вероятно, придется придумать какой-то способ вычисления границ. В этом примере я просто разворачиваю центральную точку в прямоугольник.

Вы также можете потерять другие возможности маркера, поскольку этот метод не использует объект-маркер (например, перетаскивание, анимация и т. Д.), Но наложения имеют события щелчка.

Вот доказательство концепции: http://jsfiddle.net/bryan_weaver/4rxqQ/

соответствующий код:

function initialize() { 
    var map; 
    var centerPosition = new google.maps.LatLng(38.713107, -90.42984); 
    var options = { 
     zoom: 9, 
     center: centerPosition, 
     mapTypeId: google.maps.MapTypeId.ROADMAP 
    }; 
    map = new google.maps.Map($('#map')[0], options); 

    var icon = 'https://www.google.com/mapfiles/marker_black.png'; 
    var iconBounds = constructBounds(38.713107, -90.42984); 
    var staticOverlay = new google.maps.GroundOverlay(icon, iconBounds); 
    staticOverlay.setMap(map); 
} 

function constructBounds(lat, lng){ 
    var sw = new google.maps.LatLng(lat - .03, lng - .025) 
    var ne = new google.maps.LatLng(lat + .03, lng + .025) 
    return new google.maps.LatLngBounds(sw, ne); 
} 
+0

«У Google нет готового способа остановить маркеры от масштабирования». Это интересно, потому что я сейчас боюсь, чтобы включить масштабирование маркеры. Мои создатели не изменяют размер при масштабировании. – rzymek