2017-02-03 3 views
-2

создать новую карту с зумом равно 4:Stroke появляется все больше и больше каждый раз, когда масштаб значка круга уменьшается

map = new google.maps.Map(document.getElementById('map'), { 
    zoom: 4, 
    center: new google.maps.LatLng(39.9526, -98.5795), 
    mapType: 'terrain' 
    }); 

Я слушаю для zoom_changed события, так что я могу перекроить свои маркера с новой шкалой:

google.maps.event.addListener(map, 'zoom_changed', function() { 
    var zoom = map.getZoom(); 
    $log.debug("zoom: " + zoom); 

и создать свой новый значок здесь:

var greenMarkerIcon = { 
    path: google.maps.SymbolPath.CIRCLE, 
    fillOpacity: 1, 
    fillColor: "green", 
     strokeWeight: 1, 
    scale: map.getZoom() 
    } 

Когда я приближать, все выглядит прекрасно. Когда я разворачиваюсь, значок становится больше по размеру. Уменьшение масштаба, где проблема:

Click here for image of icon after reducing scale

Граница круга становится все больше и больше. Я добавил инструкцию debug для свойства icon.strokeWeight и остается 1 все время. Я сдуваю все свои старые маркеры и перерисовываю их снова, поэтому я не знаю, почему один маркер strokeWeight появляется больше.

Любые идеи?

+0

Просьба предоставить [mcve], который демонстрирует вашу проблему. – geocodezip

+0

Я не вижу в вашем вопросе какого-либо кода, который изменит размер значка (или повлияет на ход). Вы уверены, что вы меняете значок, а не просто переписываете его новым (если новый больше, вы не сможете увидеть меньший). – geocodezip

ответ

1

Я предполагаю, что вы хотите изменить масштаб значка маркера на карте, а маркер должен быть меньше/больше, без изменения хода. Тогда вам нужно изменить только масштаб значок и установить его к маркеру:

google.maps.event.addListener(map, 'zoom_changed', function() { 
    var zoom = map.getZoom(); 
    console.log("zoom: " + zoom); 
    greenMarkerIcon.scale = (zoom + 1) * scale; // +1 is for avoiding zoom=0, scale is initial scale of icon 
    marker.setIcon(greenMarkerIcon); 
}); 

проверить этот пример: http://jsfiddle.net/dUMFW/108/

0

Ответ предоставляется правилен.

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

Спасибо.

Смежные вопросы