Сделать большой круг на карте Google без искажения проекции Меркатора? - PullRequest
3 голосов
/ 29 декабря 2011

При рисовании большого круга на карте Google, когда круги становятся действительно большими (тысячи миль в пересчете на метры), круги начинают синусоидально над картой.

Пример

Вот код для настройки и рисования кругов:

   //larger, outer circle
    var options = {
    strokeWeight: 0,
    fillColor: '#AA0000',
    fillOpacity: 0.5,
    map: map,
    radius: distance
    };

    //smaller inner circle
    var options2 = {
    strokeWeight: 0,
    fillColor: '#AA0000',
    fillOpacity: 0.5,
    map: map,
    radius: distance/2
    };

    circles[circles.length]=new google.maps.Circle(options);
    circles[circles.length]=new google.maps.Circle(options2);

    for(var i=0; i<=circles.length-1; i++)
    {
        circles[i].bindTo('center', marker, 'position');
    }

Есть ли способ избежать этого?

1 Ответ

2 голосов
/ 29 декабря 2011

Это захватывающий вопрос!

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

Если вы пытаетесь нарисовать круг в геометрический , а не географический, смысл в том, что оверлейные круги Google Maps не для вас.Вместо этого вам следует использовать GroundOverlay (где-то рендеринг прозрачной PNG-стороны на сервере) или CustomOverlay (технически более продвинутое решение).CustomOverlay может включать DIV с кружком, который вы нарисовали, используя любую технику HTML, такую ​​как CSS или SVG .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...