Я думаю, что единственный путь это использовать маркеры в качестве меток, то есть изменить форму маркеров для ваших желаемых этикеток. Две идеи, как это сделать:
1) Используйте модифицированные маркеры с пользовательской формой и текстом - например, иконки изображений, созданные с использованием Google Image Charts и Infographics (например, here или here). Но the google API to create such icons is deprecated without remedy! Or isn't?? Существует путаница, см. Мой комментарий здесь.
2) Использование markerwithlabel library (легко найти прибегая к помощи "Google Maps текст маркера"). С помощью этой библиотеки вы можете определять маркеры с метками с или без значков маркеров. Если вы не хотите, чтобы значок маркера, просто установите icon: {}
:
var marker = new MarkerWithLabel({
position: homeLatLng,
draggable: true,
raiseOnDrag: true,
map: map,
labelContent: "$425K",
labelAnchor: new google.maps.Point(22, 0),
labelClass: "labels", // the CSS class for the label
icon: {}
});
Тогда вы можете работать с ним, как с обычным маркером, то есть добавить InfoWindow для наведения мыши событий!
Here is the example how to use this library for what you need.
код Конкурировать:
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
<title>MarkerWithLabel Mouse Events</title>
<style type="text/css">
.labels {
color: red;
background-color: white;
font-family: "Lucida Grande", "Arial", sans-serif;
font-size: 10px;
font-weight: bold;
text-align: center;
width: 40px;
border: 2px solid black;
white-space: nowrap;
}
</style>
<script type="text/javascript" src="http://maps.googleapis.com/maps/api/js?v=3&sensor=false"></script>
<!-- <script type="text/javascript" src="http://google-maps-utility-library-v3.googlecode.com/svn/tags/markerwithlabel/1.1.9/src/markerwithlabel.js"></script>-->
<script type="text/javascript" src="markerwithlabel.js"></script>
<script type="text/javascript">
function initMap() {
var latLng = new google.maps.LatLng(49.47805, -123.84716);
var homeLatLng = new google.maps.LatLng(49.47805, -123.84716);
var map = new google.maps.Map(document.getElementById('map_canvas'), {
zoom: 12,
center: latLng,
mapTypeId: google.maps.MapTypeId.ROADMAP
});
var marker = new MarkerWithLabel({
position: homeLatLng,
draggable: true,
raiseOnDrag: true,
map: map,
labelContent: "$425K",
labelAnchor: new google.maps.Point(22, 0),
labelClass: "labels", // the CSS class for the label
icon: {}
});
var iw = new google.maps.InfoWindow({
content: "Home For Sale"
});
var ibOptions = {
content: 'content'
// other options
};
var ib = new google.maps.InfoWindow(ibOptions);
ib.open(map, this);
google.maps.event.addListener(marker, "mouseover", function (e) { ib.open(map, this); });
google.maps.event.addListener(marker, "mouseout", function (e) { ib.close(map, this); });
}
</script>
</head>
<body onload="initMap()">
<p>Try interacting with the marker (mouseover, mouseout, click, double-click, mouse down, mouse up, drag) to see a log of events that are fired. Events are fired whether you are interacting with the marker portion or the label portion.</p>
<div id="map_canvas" style="height: 400px; width: 100%;"></div>
</body>
</html>
@Tomas в металической библиотеке размещает все маркеры на одном месте? Как я могу отображать каждый маркер там соответствующих точек. – justin
@TMS: поле содержимого всех маркеров находится в одном месте. Это ошибка, или мы что-то упускаем? –
@JitendraPancholi это просто пример, чтобы показать, что возможно, вам, возможно, понадобится преподнести его в ваших целях. – TMS