2011-03-19 3 views
3

Я создаю карту с сотнями маркеров и информационных окон, которые идут с каждым из них. Я использую пользовательский значок вместо стандартного и кластер-кластера для ускорения загрузки.Использование текста вместо маркеров на Картах 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> 

ответ

1

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

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

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

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

Смежные вопросы