2013-06-23 3 views
-1

Im пытается выяснить, как я могу иметь ссылки, которые появляются во внешних событиях триггера div на соответствующем марке карты (открытие информационного окна). Я думаю, что мой код твердый (за исключением, может быть, где я попытался скопировать массив данных местоположения, чтобы получить функцию щелчка, чтобы иметь возможность получить доступ к массиву, учитывая пробелы в области, с которыми я столкнулся - Im просто не уверен, что делать, чтобы заставить его работать . право Может кто-нибудь пролить свет на то, что мне нужно изменить в своем коде БлагодаряКак я могу получить внешние ссылки для запуска событий click click для сопоставления маркеров карты google?

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> 
<meta name="viewport" content="initial-scale=1.0, user-scalable=no"> 
<title>Untitled Document</title> 
<script src="https://maps.googleapis.com/maps/api/js?v=3.exp&sensor=false" type="text/javascript"></script> 
<script type="text/javascript" src="http://google-maps-utility-library-v3.googlecode.com/svn/trunk/infobox/src/infobox.js"></script> 
<script src="//ajax.googleapis.com/ajax/libs/jquery/2.0.2/jquery.min.js"></script> 
<script type="text/javascript"> 


var gmarkers = []; 

function initialize() { 
var locations = [ 
     ['DESCRIPTION', 41.926979, 12.517385, 3], 
     ['DESCRIPTION', 41.914873, 12.506486, 2], 
     ['DESCRIPTION', 61.918574, 12.507201, 1] 
    ]; 




    window.map = new google.maps.Map(document.getElementById('map'), { 
     panControl: false, 
     zoomControl: false, 
     scaleControl: false, 
     streetViewControl: false, 
     mapTypeControl: false, 
     mapTypeId: google.maps.MapTypeId.ROADMAP 
    }); 



    var infowindow = new google.maps.InfoWindow(); 
    var bounds = new google.maps.LatLngBounds(); 


    // CREATE THE MARKERS ON THE MAP FROM THE ARRAY DATA 
    for (i = 0; i < locations.length; i++) { 
      marker = new google.maps.Marker({ 
       position: new google.maps.LatLng(locations[i][1], locations[i][2]), 
       map: map 
      }); 

    gmarkers.push(marker); 
    bounds.extend(marker.position); 

    // ADD A LINK FOR THIS MARKER TO THE DIV, WHEN CLICKED, IT SHOULD TRIGGER THE MARKER CLICK/INFO WINDOW FOR COORESPONDING MARKER 
    $('#listdiv').append('<p><a href="javascript:show(' + i + ')" id="link' + i + '">' + locations[i][0] + '</a>'); 


    google.maps.event.addListener(marker, 'click', (function (marker, i) { 
     return function() { 
      infowindow.setContent(locations[i][0]); 
      infowindow.open(map, marker); 
     } 
    })(marker, i)); 

} 

map.fitBounds(bounds); 

var listener = google.maps.event.addListener(map, "idle", function() { 
    //map.setZoom(10); // NO LONGER NEED, SINCE FITBOUNDS SCALES VIEW TO SHOW ALL MARKERS? 
    google.maps.event.removeListener(listener); 
}); 

} 

// THIS FUNCTION IS SUPPOSED TO BE CALLED ON THE EXTERNAL LINK CLICKS - SHOULD OPEN THE COORESPONDING MARKER/INFO WINDOW. 
function show(i) { 
    google.maps.event.trigger(gmarkers[i], 'click'); 
    alert("I see a click."); 

} 

</script> 
</head> 

<body onload="initialize();" marginheight="0" marginwidth="0" topmargin="0" leftmargin="0"> 
    <div id="map" style="width: 100%; height: 300px;"></div> 
    <div id="listdiv" style="width:100%; border: 2px solid blue; color: black; font-family: Arial, Helvetica, sans-serif; font-size:14px;"></div> 
</body> 
</html> 
+0

Есть ошибки на консольный журнал? Вы уверены, что библиотека jquery включена? Проверьте атрибут src, он пропустит http: part – alkis

+0

Я действительно не понимаю, что вы делаете с gmarkers. У вас должны быть маркеры, а не конкатенация массива местоположений. – alkis

+0

@alkis библиотека jquery должна быть в порядке - я использую то, что перечислено здесь: [link] (https://developers.google.com/speed/libraries/devguide) ... Я бы даже удалил это на данный момент - мой фокус теперь просто заставить внешние ссылки работать и запускать щелчок маркера. массив местоположений - это место, откуда поступают данные маркера/информационного окна, - отлично работает, я тестировал/добавлял массив gmarkers (копию массива местоположений), чтобы просто попытаться получить доступ к данным, так как у меня были проблемы с областью и функция для ссылок на внешние ссылки не смог увидеть данные массива. поэтому gmarkers был только от моего тестирования, вот и все. – tamak

ответ

2

Удалить эту строку:?.

gmarkers = locations.concat(); 

добавить эту строку после создания маркеров:

gmarkers.push(marker); 
+0

Спасибо. работал как шарм. Я действительно ценю твою помощь. – tamak

+0

Вот о чем я говорил в своем втором комментарии. – alkis