Я работаю над картой, которая имеет несколько маркеров на нем.
Эти маркеры используют пользовательский значок, но я также хотел бы добавить числа на вершине. Я видел, как это было выполнено с помощью более старых версий API. Как я могу сделать это в V3?
*Примечание - атрибут "заголовка" создает подсказку, когда Вы наведение мыши маркер, но я хочу что-то, что будет разделено на уровни сверху пользовательского изображения, даже когда Вы не толпитесь сверху его.
Вот документация для класса маркера, и ни один из этих атрибутов, кажется, не помогает: http://code.google.com/apis/maps/documentation/v3/reference.html#MarkerOptions
К сожалению, это непросто. Вы можете создать свой собственный маркер на основе класса 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
Это быстрый и простой маршрут, но он менее настраиваемый и требует загрузки нового изображения клиентом для каждого маркера.
Вы можете загрузить набор пронумерованных значков из источников, представленных на этом сайте:
После этого вы сможете сделать следующее:
<!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>
Снимок экрана из приведенного выше примера:
Обратите внимание, что за маркерами можно легко добавить тень. Вы можете проверить пример в Справочнике по API Карт Google: сложные маркеры для получения дополнительной информации об этом.