Javascript, изменить цвет маркера карты google
могу ли я узнать способ изменить цвет маркера Карты Google с помощью Javascript.. Я новичок в этом, и любая помощь будет высоко ценится, спасибо.
я использовал следующий код для создания маркера
marker = new google.maps.Marker({
position: new google.maps.LatLng(locations[i][1],
locations[i][2]),
animation: google.maps.Animation.DROP,
map: map
});
9 ответов:
в Google Maps API v3 вы можете попробовать изменить значок маркера. Например, для использования зеленого значка:
marker.setIcon('http://maps.google.com/mapfiles/ms/icons/green-dot.png')или как часть маркера init:
marker = new google.maps.Marker({ icon: 'http://...' });другие цвета:
- http://maps.google.com/mapfiles/ms/icons/blue-dot.png
- http://maps.google.com/mapfiles/ms/icons/red-dot.png
Etc.
можно использовать
strokeColorсвойства:var marker = new google.maps.Marker({ id: "some-id", icon: { path: google.maps.SymbolPath.FORWARD_CLOSED_ARROW, strokeColor: "red", scale: 3 }, map: map, title: "some-title", position: myLatlng });посмотреть на этой странице для других возможностей.
вы можете использовать этот код, он отлично работает.
var pinImage = new google.maps.MarkerImage("http://www.googlemapsmarkers.com/v1/009900/"); var marker = new google.maps.Marker({ position: yourlatlong, icon: pinImage, map: map });
вы можете использовать Google chart api и генерировать любой цвет с кодом rgb на лету:
пример: маркер с #ddd цвет:
http://chart.apis.google.com/chart?chst=d_map_pin_letter&chld=%E2%80%A2|dddвключить, как указано выше с
var marker = new google.maps.Marker({ position: marker, title: 'Hello World', icon: 'http://chart.apis.google.com/chart?chst=d_map_pin_letter&chld=%E2%80%A2|ddd' });
у меня есть 4 корабля, чтобы установить на одной карте, поэтому я использую пример разработчиков Google, а затем скрутил его
https://developers.google.com/maps/documentation/javascript/examples/icon-complex
в функции ниже я установил еще 3 цветовых варианта:
function setMarkers(map, locations) { ... var image = { url: 'img/bullet_amarelo.png', // This marker is 20 pixels wide by 32 pixels tall. size: new google.maps.Size(40, 40), // The origin for this image is 0,0. origin: new google.maps.Point(0,0), // The anchor for this image is the base of the flagpole at 0,32. anchor: new google.maps.Point(0, 40) }; var image1 = { url: 'img/bullet_azul.png', // This marker is 20 pixels wide by 32 pixels tall. size: new google.maps.Size(40, 40), // The origin for this image is 0,0. origin: new google.maps.Point(0,0), // The anchor for this image is the base of the flagpole at 0,32. anchor: new google.maps.Point(0, 40) }; var image2 = { url: 'img/bullet_vermelho.png', // This marker is 20 pixels wide by 32 pixels tall. size: new google.maps.Size(40, 40), // The origin for this image is 0,0. origin: new google.maps.Point(0,0), // The anchor for this image is the base of the flagpole at 0,32. anchor: new google.maps.Point(0, 40) }; var image3 = { url: 'img/bullet_verde.png', // This marker is 20 pixels wide by 32 pixels tall. size: new google.maps.Size(40, 40), // The origin for this image is 0,0. origin: new google.maps.Point(0,0), // The anchor for this image is the base of the flagpole at 0,32. anchor: new google.maps.Point(0, 40) }; ... }и в For bellow я установил один цвет для каждого корабля:
for (var i = 0; i < locations.length; i++) { ... if (i==0) var imageV=image; if (i==1) var imageV=image1; if (i==2) var imageV=image2; if (i==3) var imageV=image3; ... # remember to change icon: image to icon: imageV }финал результат:
Я предлагаю использовать Google Charts API потому что вы можете указать текст, цвет текста, цвет заливки и цвет контура, используя шестнадцатеричные цветовые коды, например #FF0000 для красного цвета. Вы можете назвать его следующим образом:
function getIcon(text, fillColor, textColor, outlineColor) { if (!text) text = '•'; //generic map dot var iconUrl = "http://chart.googleapis.com/chart?cht=d&chdp=mapsapi&chl=pin%27i\%27[" + text + "%27-2%27f\hv%27a\]h\]o\" + fillColor + "%27fC\" + textColor + "%27tC\" + outlineColor + "%27eC\Lauto%27f\&ext=.png"; return iconUrl; }затем, когда вы создаете свой маркер, вы просто устанавливаете свойство icon как таковое, где переменные myColor являются шестнадцатеричными значениями (минус знак хэша):
var marker = new google.maps.Marker({ position: new google.maps.LatLng(locations[i][1], locations[i][2]), animation: google.maps.Animation.DROP, map: map, icon: getIcon(null, myColor, myColor2, myColor3) });можно использовать
http://chart.googleapis.com/chart?chst=d_map_pin_letter&chld=•|FF0000, который немного легче расшифровать, как альтернативный URL, если вы только нужно установить текст и цвет заливки.ответ Хуррама относится к стороннему сайту, который перенаправляет на API Google Charts. Это означает, что если этот человек снимает свой сервер, вы обливаетесь. Я предпочитаю иметь гибкость, которую предлагает Google API, а также надежность перехода непосредственно в Google. Просто убедитесь, что вы указать значение для каждого из цветов, или он не будет работать.
мне очень понравился ответ, данный Bahadır Yağan, за исключением того, что мне не нравилось в зависимости от ограниченного набора значков, предоставленных Google или внешним API для создания моих значков маркеров. Вот исходное решение:
var marker = new google.maps.Marker({ id: "some-id", icon: { path: google.maps.SymbolPath.FORWARD_CLOSED_ARROW, strokeColor: "red", scale: 3 }, map: map, title: "some-title", position: myLatlng });и вот мое улучшенное решение:
var marker = new google.maps.Marker({ position: myLatlng, icon:{ path: 'm 12,2.4000002 c -2.7802903,0 -5.9650002,1.5099999 -5.9650002,5.8299998 0,1.74375 1.1549213,3.264465 2.3551945,4.025812 1.2002732,0.761348 2.4458987,0.763328 2.6273057,2.474813 L 12,24 12.9825,14.68 c 0.179732,-1.704939 1.425357,-1.665423 2.626049,-2.424188 C 16.809241,11.497047 17.965,9.94 17.965,8.23 17.965,3.9100001 14.78029,2.4000002 12,2.4000002 Z', fillColor: '#00FF00', fillOpacity: 1.0, strokeColor: '#000000', strokeWeight: 1, scale: 2, anchor: new google.maps.Point(12, 24), }, });мне нужен был конкретный значок pin, поэтому я пошел и сделал один с inkscape, затем открыл файл SVG и скопировал путь svg в путь в код, но это работает с любым путем SVG, который вы вводите атрибут "путь" объекта значка.
вот результат:
чтобы расширить принятый ответ, вы можете создать пользовательский
MarkerImagesлюбого цвета с помощью API вhttp://chart.googleapis.comВ дополнение к изменению цвета, это также изменяет форму маркера, которая может быть нежелательной.
const marker = new window.google.maps.Marker( position: markerPosition, title: markerTitle, map: map) marker.addListener('click', () => marker.setIcon(changeIcon('00ff00'));) const changeIcon = (newIconColor) => { const newIcon = new window.google.maps.MarkerImage( `http://chart.googleapis.com/chart? chst=d_map_spin&chld=1.0|0|${newIconColor}|60|_|%E2%80%A2`, new window.google.maps.Size(21, 34), new window.google.maps.Point(0, 0), new window.google.maps.Point(10, 34), new window.google.maps.Size(21,34) ); return newIcon }
var map_marker = $(".карта-маркер").дети ("img").attr ("src") var pinImage = новый google.карты.MarkerImage (map_marker);
var marker = new google.maps.Marker({ position: uluru, map: map, icon: pinImage }); }

Comments