Использование текста вместо маркеров на Картах Google

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

В каждом информационном окне есть ссылка, которая ведет на определенную статью. Чтобы открыть эту статью, необходимо выполнить два действия:

  1. Вы должны нажать на маркер
  2. Открывается информационное окно, вы видите название статьи, и вам нужно нажать на название (это ссылка), чтобы открыть статью.

Я хотел бы избежать одного клика. Возможно ли иметь текстовый маркер (вместо того, чтобы видеть пользовательский значок) - вы бы видели текст «статья 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>

person take2    schedule 19.03.2011    source источник


Ответы (1)


Невозможно заменить маркер текстом, по крайней мере, на данный момент, команда Google Maps может добавить эту функцию в ближайшем будущем.

Чтобы обойти эту проблему двойного щелчка, вы можете показать информационное окно, когда пользователь наводит указатель мыши на маркер, и когда пользователь щелкает маркер, ему будет предложено открыть статью/страницу.

Вы можете заглянуть в разделы событий для получения дополнительной информации об обработке событий для маркера. Маркер Google Maps, вам придется немного прокрутить вниз, чтобы увидеть события раздел.

Надеюсь это поможет.

person Saad Ulde    schedule 09.02.2013