2013-06-19 14 views
6

Ich folgte der Bibliothek und Youtube Guide, um Marker Clusterer zu meiner Karte hinzuzufügen, aber ich habe das Problem.Google Map API V3- MarkerClusterer undefined

Ich habe MarkerClusterer wie in der Anleitung angegeben, aber immer noch den obigen Fehler erhalten. unten ist mein Code

<!DOCTYPE html> 
<html lang="fr" xmlns="http://www.w3.org/1999/xhtml" xmlns:v="urn:schemasmicrosoft- 
com:vml"> 
<head> 
<meta name="viewport" content="initial-scale=1.0, user-scalable=no"/> 
<meta charset="UTF-8" /> 
<title>Ma Page de Google Maps V3</title> 
<style> 
     html, body, #map_canvas { 
    margin: 3; 
    padding: 3; 
    height: 100%; 
    } 
</style> 
<style type="text/css"> 
    .tooltip { 
    background-color:#ffffff; 
    font-weight:bold; 
    border:2px #006699 solid; 
    width:150px} 
</style> 
<script src="http://maps.googleapis.com/maps/api/js?v=3.exp&sensor=false"></script> 
<script src="http://www.google.com/jsapi"></script> 
<script src="../src/data.json" type="text/javascript"></script> 
<script type="text/javascript"> 
    var script = '<script type="text/javascript" src="../src/markerclusterer'; 
    if (document.location.search.indexOf('compiled') !== -1) { 
    script += '_compiled'; 
    } 
    script += '.js"><' + '/script>'; 
    document.write(script); 
</script> 
<script> 
var trace_markers= []; 
var markerCluster= null; 
function Trace_Pin(Lat, Long, immat, type, site, vitesse, date) 
{ 
var image_trace = new google.maps.MarkerImage('http://maps.google.com/mapfiles/kml/pal3/icon61.png', 
    new google.maps.Size(32, 32), 
    new google.maps.Point(0,0), 
    new google.maps.Point(16, 16)); 

    var vehlatlng = new google.maps.LatLng(Lat, Long) ; 
    var trace_marker = new google.maps.Marker({ 
    position: vehlatlng, 
    icon: image_trace }); 
    trace_marker.tooltip_html = '<div class="tooltip">' + 'Date : ' + date + '<br>' + 'Vitesse : ' + vitesse + ' km/h' + '<br>' + '<\/div>';  
    trace_markers.push(trace_marker); 
    markerCluster = new MarkerClusterer(map, trace_markers); 
    Liste_Points.push(trace_marker.getPosition()); 
    TraceBounds.extend(trace_marker.position); 
    } 
</script> 

Wo habe ich falsch gemacht?

+0

Sind Sie sicher, dass Ihre Datei markerclusterer.js/markerclusterer_compiled.js korrekt aufgerufen wird? Müssen Sie etwas initialisieren, bevor Sie versuchen, auf die MarkerClusterer-Klasse zu verweisen? – duncan

+0

Woher rufen Sie auch die Trace_Pin-Funktion? Das ist aus diesem Code nicht ersichtlich - musst du vielleicht einstellen, dass auf das Laden der markercluster-JS-Datei gewartet wird, bevor versucht wird, diese Funktion aufzurufen? – duncan

+1

ich fand heraus, dass ich die markerclusterer.js aus der Google Bibliothek herunterladen muss, [http://google-maps-utility-library-v3.googlecode.com/svn/trunk/markerclusterer/src/markerclusterer.js und lade es auf den Server hoch, dann füge es einfach zu '' hinzu und das soll das Problem lösen. Danke für die Hilfe :) – dswong

Antwort

17

ich fand heraus, dass ich die markerclusterer.js von google library, http://google-maps-utility-library-v3.googlecode.com/svn/trunk/markerclusterer/src/markerclusterer.js herunterladen und auf den Server hochladen, dann einfach hinzufügen, und das sollte das Problem lösen. Dank für :)

ersetzen diese

<script src="http://maps.googleapis.com/maps/api/js?v=3.exp&sensor=false"></script> 
<script src="http://www.google.com/jsapi"></script> 
<script src="../src/data.json" type="text/javascript"></script> 
<script type="text/javascript"> 
var script = '<script type="text/javascript" src="../src/markerclusterer'; 
if (document.location.search.indexOf('compiled') !== -1) { 
    script += '_compiled'; 
} 
script += '.js"><' + '/script>'; 
document.write(script); 
</script> 

mit diesem

<script src="http://maps.googleapis.com/maps/api/js?v=3.exp&sensor=false"></script> 
<script src="markerclusterer.js" type="text/javascript"></script> 
+0

Das hat es behoben, aber kann jemand das asynchrone Problem hinter dem Laden dieses Skripts erklären? Denn manchmal wird es beim Aktualisieren nicht funktionieren, aber das Aktualisieren des Cache wird immer funktionieren. – Serey

3

Habe ich nur noch den Marker Cluster und Juwel meiner Liste zu helfen und es begann zu arbeiten!

In Ihrem Gemfile, fügen Sie diese Zeile:

gem 'markerclustererplus-Schienen' Sie es, indem Sie die folgende in der JavaScript-Datei enthalten kann:

// = erfordern markerclusterer

Referenz : https://github.com/RogerE/markerclustererplus-rails

+0

Danke für Ihre Antwort, aber ich arbeite nicht mehr am Projekt. Es ist fertig. Ich wünsche ihnen einen wunderbaren Tag. – dswong

Verwandte Themen