2011-03-19 21 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

它不可能用文字来代替标记,至少不是现在,谷歌地图团队可能在不久的将来增加的功能。

为了避免这种点击两次的问题,你可以做的是当用户将鼠标放在标记上时显示infoWindow,当用户单击标记时,他将被引导打开文章/页面。

您可以查看事件部分以获取有关标记事件处理的更多信息。 Google Maps Marker,你将不得不向下滚动一些事件部分。

希望这会有所帮助。

相关问题