Как изменить цвет маркера 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
У вас будет один набор логики делать все "обычные" контакты, а другой, который делает "специальный" контакт(ы), используя новый маркер определен.
с версией 3 Google Maps API, самый простой способ сделать это может быть путем захвата пользовательского набора значков, как тот, который Бенджамин Кин создал здесь:
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}); }
это то, что я лично использую для всех маркеров, которые я создаю. Я предпочитаю иметь возможность изменить цвета прихоти.
обновление: шестнадцатеричный цвет значка по умолчанию - "#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 () the документация даже есть пример настройки цвета. Из моего собственного кода:
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