2013-06-19 59 views
6

Tôi đã làm theo hướng dẫn thư viện và youtube để thêm cụm đánh dấu vào bản đồ của tôi nhưng tôi đã gặp sự cố.Google Map API V3- MarkerClusterer undefined

MarkerClusterer undefined 

Tôi đã xác định MarkerClusterer là hiển thị trong hướng dẫn nhưng vẫn gặp lỗi trên. bên dưới là mã của tôi

<!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> 

Tôi đã làm sai ở đâu?

+0

bạn có chắc là tệp markerclusterer.js/markerclusterer_compiled.js của bạn đang được gọi chính xác không? Bạn có cần phải làm bất cứ điều gì để khởi tạo nó trước khi cố gắng tham khảo lớp MarkerClusterer không? – duncan

+0

Ngoài ra, bạn đang gọi hàm Trace_Pin từ đâu? Điều đó không rõ ràng từ mã này - bạn có cần phải điều chỉnh để chờ tệp tin markercluster JS tải vào trước khi cố gắng gọi hàm đó không? – duncan

+1

tôi phát hiện ra rằng tôi cần phải tải xuống markerclusterer.js từ thư viện google, [http://google-maps-utility-library-v3.googlecode.com/svn/trunk/markerclusterer/src/markerclusterer.js và tải nó lên máy chủ, sau đó chỉ cần thêm nó vào '' và shoulh giải quyết vấn đề. cảm ơn vì đã giúp đỡ :) – dswong

Trả lời

17

tôi phát hiện ra rằng tôi cần phải tải xuống markerclusterer.js từ thư viện google, http://google-maps-utility-library-v3.googlecode.com/svn/trunk/markerclusterer/src/markerclusterer.js và tải tệp lên máy chủ, sau đó thêm nó vào và điều đó sẽ giải quyết được sự cố. thanks vì đã giúp :)

thay thế này

<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> 

với điều này

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

Điều này đã khắc phục sự cố, nhưng ai đó có thể giải thích vấn đề không đồng bộ sau khi tải tập lệnh này? Bởi vì đôi khi khi làm mới nó sẽ không hoạt động, nhưng làm mới bộ nhớ cache sẽ luôn hoạt động. – Serey

3

Tôi chỉ cần thêm cụm marker cộng đá quý vào danh sách của tôi và nó bắt đầu làm việc!

Trong Gemfile của bạn, thêm dòng này:

đá quý 'markerclustererplus-ray' Bạn có thể bao gồm nó bằng cách thêm những điều sau đây để bạn javascript file:

// = đòi hỏi markerclusterer

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

+0

Cảm ơn bạn đã trả lời nhưng tôi không làm việc trên dự án nữa. Xong rôi. Có một ngày tuyệt vời. – dswong

Các vấn đề liên quan