Цвет маркера Google Maps JS API v3 - PullRequest
3 голосов
/ 22 марта 2012

Я использую фантастическую библиотеку кода, которая позволяет мне иметь много специальных маркеров с информационными блоками в стиле css.Кроме того, я хотел бы иметь три разных категории цветных маркеров, обозначающих 3 разные реки на карте.Хотя есть много сообщений, объясняющих, как раскрасить маркер, мой код падает, если я использую эти подходы.Мне нужна помощь с тем, как назначить определенный цвет для каждого места.За исключением множества других мест, вот мой код с красным маркером по умолчанию:

var locations = [
          ['<div id="mm-img"><a href="<?php echo $this->getThemePath()?>/mile-marker-img/Ed-00.jpg" target="_blank"><img src="<?php echo $this->getThemePath()?>/mile-marker-img/Ed-00-sm.jpg" /></a><h3>Mile Marker 0 East</h3><p>Old east channel river mouth, now East Waterway. Spokane street fishing pier. Location of historic river mouth, east channel Duwamish River.<br /><span style="font-size:10px;line-height:300%">photo: UW University Libraries</span></p></div>', 47.573600, -122.343585, 1],

          ['<div id="mm-img"><a href="<?php echo $this->getThemePath()?>/mile-marker-img/Ed-01.jpg" target="_blank"><img src="<?php echo $this->getThemePath()?>/mile-marker-img/Ed-01-sm.jpg" /></a><h3>Mile Marker 1 East</h3><p>Kellog Island, Federal Center South, Diagonal Way, Oxbow Building, Shoreline Access. Proposed mile marker design for new Corps of Engineers building on the Duwamish River.</p></div>', 47.560398, -122.341732, 2],

          ['<div id="mm-img"><a href="<?php echo $this->getThemePath()?>/mile-marker-img/BR-LWO.jpg" target="_blank"><img src="<?php echo $this->getThemePath()?>/mile-marker-img/BR-LWO-sm.jpg" /></a><h3>Old Lake Washington Outlet</h3><p>Renton airport. Near Black River resort. View of Resort on Lake Washington prior to 1916, when the lake emptied via the Black River into the Duwamish.<br /><span style="font-size:10px;line-height:300%">photo: Renton Historical Museum</span></p></div>', 47.491100, -122.217169, 38]     
        ];

 var map = new google.maps.Map(document.getElementById('map'), {
          zoom: 13,
          center: new google.maps.LatLng(47.524501, -122.319785),
          mapTypeId: google.maps.MapTypeId.ROADMAP
        });

        var infowindow = new google.maps.InfoWindow();

        var marker, i;

        for (i = 0; i < locations.length; i++) {  
          marker = new google.maps.Marker({
            position: new google.maps.LatLng(locations[i][1], locations[i][2]),
            map: map
          });

          google.maps.event.addListener(marker, 'click', (function(marker, i) {
            return function() {
              infowindow.setContent(locations[i][0]);
              infowindow.open(map, marker);
            }
          })(marker, i));
        }

Ответы [ 3 ]

2 голосов
/ 24 марта 2012

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

1) У вас есть местоположения с

[popup with a bunch of text, 47.491100, -122.217169, "blue", 38]

2) Вы помещаете в переменную массив, описывающий, что вы получаете

var icons = new Array();
icons["red"] = new google.maps.MarkerImage("http://labs.google.com/ridefinder/images/mm_20_red.png",

3) Действительно хитрая часть, код, который мне пришлось просто скопировать из кода другого парня, заключалась в том, как назвать цвет

if (!icons[iconColor]) {
icons[iconColor] = new google.maps.MarkerImage("http://labs.google.com/ridefinder/images/mm_20_"+ iconColor +".png",

4) и, наконец, вы получаете иконку с

map: map,
icon: getMarkerImage(locations[i][3])
1 голос
/ 15 декабря 2012

для меня самый простой способ это использовать Генератор динамических значков Google

Например: https://chart.googleapis.com/chart?chst=d_map_pin_letter&chld=%E5%8D%B1|FF0000|000000

0 голосов
/ 22 марта 2012

Не уверен, по каким критериям выбрать, какой цвет ты собираешься использовать. Это последнее значение в массиве местоположений?

Я использую png спрайт для своих маркеров, поэтому для каждого маркера у меня есть что-то вроде этого:

var redIcon = new google.maps.MarkerImage( 
    ABSPATH + 'images/map-icons.png',
    new google.maps.Size( 20, 25 ),
    new google.maps.Point( 0, 60 ),
    new google.maps.Point( 10, 85 )
);

Затем вы определяете, какой цвет использовать, и прикрепляете его к маркеру:

if ( locations[i][3] == 38 ) {
    icon = redIcon;
} else {
    icon = bluIcon;
}

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