2011-03-19 3 views
3

私は何百ものマーカーと情報ウィンドウのそれぞれに付いているマップを作成しています。私は、デフォルトのものとマーカークラスタラーの代わりにカスタムアイコンを使って読み込みを高速化しています。Googleマップのマーカーの代わりにテキストを使用

すべての情報ウィンドウには、特定の記事につながるリンクがあります。その記事を開くためには、関与する2つのアクションがあります

  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マップチームは、近い将来に機能を追加することができない、テキストにマーカーを交換します。

このような2回のクリックの問題を回避するには、ユーザーがマーカー上にマウスを置くとinfoWindowを表示し、ユーザーがマーカーをクリックすると記事/ページを開くように指示されます。

マーカーのイベント処理の詳細については、イベントのセクションを参照してください。 Google Maps Markerの場合、イベントセクションのために少しスクロールする必要があります。

これが役に立ちます。

関連する問題