Google Map API v3 Настройка цвета

map sample image

Я пытаюсь получить карту, подобную приведенному выше изображению, используя карту google. Я сделал карту в оттенках серого, задав насыщенность -100 в объекте StyledMapType и нарисовал радиус вокруг маркера с помощью объекта Circle. Теперь вся карта - серый, так как я не могу установить другой уровень насыщения внутри круга. Есть ли способ достичь этого?

Ответы

Ответ 1

Еще одна идея - создать вторую карту, по-другому по стилю через StyledMapType, сделать ее абсолютно позиционированной и поставить перед первой графикой в ​​сером виде.

Вы можете заставить его выглядеть круглым, используя -webkit-mask, как описано здесь

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

var block = false;
google.maps.event.addListener (thismap, 'center_changed', function(event) {
    if (block) return;
    block = true;
    othermap.setCenter(thisMap.getCenter());
    block=false;
});

То же самое должно быть сделано для "center_changed" (для управления центрированием карт) и для "zoom_changed" (масштабирование карт управления) для обеих карт

Здесь я настроил пример

Если вам нужно создать несколько карт таким образом, вам нужно будет сделать больше работы, чтобы заставить их придерживаться необходимых точек.

Ответ 2

Насколько я знаю, нет никакого способа выполнить это непосредственно в API. Мне приходилось добиваться аналогичного эффекта в прошлом и то, как я это делал, было создание "пончика", а не круга.

Эффективно идея состоит в том, чтобы создать большую фигуру, которая исключает круговую область в центре. Таким образом, вы можете установить непрозрачность на многоугольнике достаточно низко, чтобы выделить "область интересов" в этом случае центрального круга.

Это, пожалуй, хорошая отправная точка: http://www.geocodezip.com/v3_polygon_example_donut.html

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

Надеюсь, это поможет.