Как я могу создать пронумерованные маркеры карты в Google Maps V3?

Я работаю над картой, которая имеет несколько маркеров на нем.

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

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

Вот документация для класса маркера, и ни один из этих атрибутов, кажется, не помогает: http://code.google.com/apis/maps/documentation/v3/reference.html#MarkerOptions

59
задан Daniel Vassallo 4 August 2010 в 21:46
поделиться

2 ответа

К сожалению, это непросто. Вы можете создать свой собственный маркер на основе класса OverlayView ( пример ) и поместить в него свой собственный HTML-код, включая счетчик. Это оставит вас с очень простым маркером, который вы не можете легко перетаскивать или добавлять тени, но он очень настраиваемый.

Как вариант, вы можете добавить метку к маркеру по умолчанию . Это будет менее настраиваемым, но должно работать. Он также сохраняет все полезные функции, которые делает стандартный маркер.

Подробнее о наложениях можно прочитать в статье Google Развлечения с объектами MVC .

Изменить: если вы не хотите создавать класс JavaScript, вы можете использовать Google Chart API . Например:

Нумерованный маркер:

http://chart.apis.google.com/chart?chst=d_map_pin_letter&chld=7|FF0000|000000

Текстовый маркер:

http://chart.apis.google.com/chart?chst=d_map_spin&chld=1|0|FF0000|12|_|foo

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

62
ответ дан 24 November 2019 в 18:00
поделиться

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

После этого вы сможете сделать следующее:

<!DOCTYPE html>
<html> 
<head> 
    <meta http-equiv="content-type" content="text/html; charset=UTF-8"/> 
    <title>Google Maps Demo</title> 
    <script type="text/javascript"
            src="http://maps.google.com/maps/api/js?sensor=false"></script> 

    <script type="text/javascript"> 
    function initialize() {

      var myOptions = {
        zoom: 11,
        center: new google.maps.LatLng(-33.9, 151.2),
        mapTypeId: google.maps.MapTypeId.ROADMAP
      }

      var map = new google.maps.Map(document.getElementById("map"), myOptions);

      var locations = [
        ['Bondi Beach', -33.890542, 151.274856, 4],
        ['Coogee Beach', -33.923036, 151.259052, 5],
        ['Cronulla Beach', -34.028249, 151.157507, 3],
        ['Manly Beach', -33.80010128657071, 151.28747820854187, 2],
        ['Maroubra Beach', -33.950198, 151.259302, 1]
      ];

      for (var i = 0; i < locations.length; i++) {
          var image = new google.maps.MarkerImage('marker' + i + '.png',
                      new google.maps.Size(20, 34),
                      new google.maps.Point(0, 0),
                      new google.maps.Point(10, 34));

          var location = locations[i];
          var myLatLng = new google.maps.LatLng(location[1], location[2]);
          var marker = new google.maps.Marker({
              position: myLatLng,
              map: map,
              icon: image,
              title: location[0],
              zIndex: location[3]
          });
      }
    }
    </script> 
</head> 
<body style="margin:0px; padding:0px;" onload="initialize();"> 
    <div id="map" style="width:400px; height:500px;"></div> 
</body> 
</html>

Снимок экрана из приведенного выше примера:

Google Numbered Marker Icons

Обратите внимание, что за маркерами можно легко добавить тень. Вы можете проверить пример в Справочнике по API Карт Google: сложные маркеры для получения дополнительной информации об этом.

21
ответ дан 24 November 2019 в 18:00
поделиться
Другие вопросы по тегам:

Похожие вопросы: