Подтвердить что ты не робот

Как создать круг в google map v3 с одинаковым радиусом во всех масштабах?

Я работаю над миграцией кода карты с v2 на v3.

В v2 я создаю круг с помощью GProjection и Overlay, и он будет выглядеть одинаковым для всех уровней масштабирования.

В v3 google дает класс Circle, который создаст круг на карте, но он изменится в разных уровнях масштабирования.

Я хочу создать круг, который будет иметь одинаковый размер во всех уровнях масштабирования.

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

Спасибо заранее.

4b9b3361

Ответ 1

Чтобы создать круги с одинаковым размером пикселей на экране (в сравнении с тем же размером области в географических координатах), вы традиционно используете маркер с пользовательской иконкой в ​​форме круга. Но теперь вы можете быть более гибкими и использовать относительно новые символы в версии 3.

var marker = new google.maps.Marker({
  position: new google.maps.LatLng(-122.5,47.5),
  icon: {
    path: google.maps.SymbolPath.CIRCLE,
    fillOpacity: 0.5,
    fillColor: '#ff0000',
    strokeOpacity: 1.0,
    strokeColor: '#fff000',
    strokeWeight: 3.0, 
    scale: 20 //pixels
  }
});

Кроме того: вы также можете сделать классные анимации из этих символов: http://googlegeodevelopers.blogspot.com/2012/06/powerful-data-visualization-with.html

Ответ 2

Я использую этот код для управления кругами масштабирования и масштабирования на моей карте Google V3:

google.maps.event.addListener(iMap.map, 'zoom_changed', function () {
    for (var i = 0; i < iMap.circle.length; i++) {
        var p = Math.pow(2, (21 - iMap.map.getZoom()));
        iMap.circle[i].setRadius(p * 1128.497220 * 0.0027);
    }

    menu.hide();
});