Как изменить цвет маркера Google Maps?

Я использую Google Maps API для создания карты, полной маркеров, но я хочу, чтобы один маркер выделялся из других. Самое простое, я думаю, было бы изменить цвет маркера на синий, а не красный. Это простая вещь или мне нужно как-то создать совершенно новый значок? Если мне нужно создать новый значок, что самый простой способ сделать это?

7 ответов


поскольку карты v2 устарели, вас, вероятно, интересуют карты v3: https://developers.google.com/maps/documentation/javascript/markers#simple_icons

для карт v2:

http://code.google.com/apis/maps/documentation/overlays.html#Icons_overview

У вас будет один набор логики делать все "регулярные" контакты, а другой, который делает "специальный" pin(ы), используя новый маркер.


с версией 3 API Google Maps, самый простой способ сделать это может быть путем захвата пользовательского набора значков, как тот, который Бенджамин Кин создал здесь:

http://www.benjaminkeen.com/?p=105

Если вы разместите все эти значки в том же месте, что и ваша страница карты, вы можете раскрасить маркер, просто используя соответствующую опцию значка при его создании:

var beachMarker = new google.maps.Marker({
  position: myLatLng,
  map: map,
  icon: 'brown_markerA.png'
});

Это супер-легко, и это подход, который я использую для проекта Я сейчас работаю над этим.


MapIconMaker: библиотека для Google Maps v2

один из способов-это использовать MapIconMaker. Вот пример здесь. Значки Google Maps по умолчанию-ширина 20px и высота 34px, поэтому вы можете использовать что-то вроде этого для эмуляции:

var newIcon = MapIconMaker.createMarkerIcon({width: 20, height: 34, primaryColor: "#0000FF", cornercolor:"#0000FF"});
var marker = new GMarker(map.getCenter(), {icon: newIcon});

вы даже можете обернуть его в некоторую функцию, чтобы сделать вещи еще проще для себя:

function getIcon(color) {
    return MapIconMaker.createMarkerIcon({width: 20, height: 34, primaryColor: color, cornercolor:color});
}

это то, что я лично использую для всех маркеров, которые я создаю. Я предпочитаю иметь возможность изменить цвета прихоти.

Update: шестнадцатеричный цвет значка по умолчанию - "#FE7569". Кроме того, вы можете setImage на маркере, а не создавать новый маркер с новым значком. Поэтому, если вы хотите выделить функцию, вы можете пойти с чем-то вроде этого, используя функцию выше:

function highlightMarker(marker, highlight) {
    var color = "#FE7569";
    if (highlight) {
        color = "#0000FF";
    }
    marker.setImage(getIcon(color).image);
}

StyledMarker: библиотека для Google Maps v3

поскольку V2 был заменен V3 некоторое время назад, я подумал, что должен обновить этот ответ. Я создал библиотеку для пользовательских маркеров, которые могут можно найти в служебной библиотеке V3 здесь. Он позволяет использовать различные цвета и формы, а также размещать текст на маркере. Он работает с помощью Google Charts API, который имеет методы для создания маркеров типа Google Maps. Не стесняйтесь смотреть на исходный код, если вы предпочитаете использовать Google Charts API напрямую.

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


(устарело) вам не нужны пользовательские библиотеки для Google Maps v3.

var pinColor = "FE7569";
var pinImage = new google.maps.MarkerImage("http://chart.apis.google.com/chart?chst=d_map_pin_letter&chld=%E2%80%A2|" + pinColor,
    new google.maps.Size(21, 34),
    new google.maps.Point(0,0),
    new google.maps.Point(10, 34));
var pinShadow = new google.maps.MarkerImage("http://chart.apis.google.com/chart?chst=d_map_pin_shadow",
    new google.maps.Size(40, 37),
    new google.maps.Point(0, 0),
    new google.maps.Point(12, 35));
var marker = new google.maps.Marker({
            position: new google.maps.LatLng(0,0), 
            map: map,
            icon: pinImage,
            shadow: pinShadow
        });

С Мэтт Бернс Это работает по состоянию на октябрь 2014 года, но устарело.


лично я думаю, что значки, созданные Google Charts API, выглядят великолепно и легко настраиваются динамически.

см. мой ответ на Google Maps API 3-пользовательский цвет маркера для маркера по умолчанию (точка)


самый простой способ, который я нашел, - использовать BitmapDescriptorFactory.defaultMarker() в документация даже имеет пример установки цвета. Из моего собственного кода:

MarkerOptions marker = new MarkerOptions()
            .title(formatInfo(data))
            .icon(BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_AZURE))
            .position(new LatLng(data.getLatitude(), data.getLongitude()))

чтобы настроить маркеры, вы можете сделать это с помощью этого онлайн-инструмента:https://materialdesignicons.com/

в вашем случае, вы хотите, чтобы карта-маркер который доступен здесь:https://materialdesignicons.com/icon/map-marker и который вы можете настроить онлайн.

Если вы просто хотите изменить по умолчанию красный цвет на синий, вы можете загрузить этот значок: http://maps.google.com/mapfiles/ms/icons/blue-dot.png

Это было упомянуто в этой теме:https://stackoverflow.com/a/32651327/6381715