Я создаю карту с сотнями маркеров и информационных окон, связанных с каждым из них. Я использую пользовательский значок вместо стандартного и кластеризатор маркеров для ускорения загрузки.
В каждом информационном окне есть ссылка, которая ведет на определенную статью. Чтобы открыть эту статью, необходимо выполнить два действия:
- Вы должны нажать на маркер
- Откроется информационное окно, вы увидите название статьи, и вам нужно щелкнуть по названию (это ссылка), чтобы открыть статью.
Я хотел бы избежать одного клика. Возможно ли иметь текстовый маркер (вместо того, чтобы видеть пользовательский значок) - вы бы видели текст «статья 1», а при нажатии на нее открывается «статья 1»?
Вот часть моего кода:
<head>
<script type="text/javascript" src="http://maps.google.com/maps/api/js?sensor=false"></script>
<script type="text/javascript" src="http://google-maps-utility-library-v3.googlecode.com/svn/trunk/markerclusterer/src/markerclusterer.js"></script>
<script type="text/javascript">
var map = null;
var markerArray = []; //create a global array to store markers
var myPoints = [
[1, 1, 'Article 1'],
[2, 2, 'Article 2'],
[3, 3, 'Article 3'],
];
//create global array to store points
function initialize() {
var myOptions = {
zoom: 5,
center: new google.maps.LatLng(2, 2),
mapTypeControl: true,
mapTypeControlOptions: {
style: google.maps.MapTypeControlStyle.DROPDOWN_MENU
},
navigationControl: true,
mapTypeId: google.maps.MapTypeId.ROADMAP
}
map = new google.maps.Map(document.getElementById("map_canvas"), myOptions);
var mcOptions = {
gridSize: 10,
maxZoom: 15
};
var mc = new MarkerClusterer(map, [], mcOptions);
google.maps.event.addListener(map, 'click', function() {
infowindow.close();
});
// Add markers to the map
// Set up markers based on the number of elements within the myPoints array
for(var i=0; i<myPoints.length; i++){
createMarker(new google.maps.LatLng(myPoints[i][0], myPoints[i][1]), myPoints[i][2]);
}
mc.addMarkers(markerArray , true);
}
var infowindow = new google.maps.InfoWindow({
size: new google.maps.Size(150, 50)
});
var image = '/321.png';
function createMarker(latlng, html) {
var contentString = html;
var marker = new google.maps.Marker({
position: latlng,
map: map,
icon:image,
zIndex: Math.round(latlng.lat() * -100000) << 5
});
google.maps.event.addListener(marker, 'click', function() {
infowindow.setContent(contentString);
infowindow.open(map, marker);
});
markerArray.push(marker); //push local var marker into global array
}
window.onload = initialize;
</script>
</head>
1 ответ
Невозможно заменить маркер текстом, по крайней мере, на данный момент, команда Google Maps может добавить эту функцию в ближайшем будущем.
Чтобы обойти эту проблему двойного щелчка, вы можете показать информационное окно, когда пользователь наводит указатель мыши на маркер, и когда пользователь щелкает маркер, ему будет предложено открыть статью/страницу.
Вы можете заглянуть в разделы событий для получения дополнительной информации об обработке событий для маркера. Маркер Google Maps, вам придется немного прокрутить вниз, чтобы увидеть события раздел.
Надеюсь это поможет.
Похожие вопросы
Новые вопросы
google-maps
Карты Google - это приложение и технология службы картографирования веб-страниц и мобильных устройств, предоставляемые компанией Google, которые предлагают спутниковые изображения, карты улиц и перспективы просмотра улиц. Также поддерживаются карты, встроенные на сторонние веб-сайты через API Карт Google, и локатор для городских предприятий и других организаций во многих странах мира.