8

我按照图书馆和 youtube 指南将标记聚类器添加到我的地图,但我遇到了问题。

MarkerClusterer undefined

我已将 MarkerClusterer 定义为指南中所示,但仍然出现上述错误。下面是我的代码

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

我哪里做错了?

4

3 回答 3

19

我发现我需要从谷歌库下载 markerclusterer.js, http: //google-maps-utility-library-v3.googlecode.com/svn/trunk/markerclusterer/src/markerclusterer.js 并将其上传到服务器,然后只需将其添加到,这应该可以解决问题。感谢您的帮助:)

替换这个

<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 src="http://maps.googleapis.com/maps/api/js?v=3.exp&sensor=false"></script>
<script src="markerclusterer.js" type="text/javascript"></script>
于 2013-06-19T12:00:54.333 回答
3

我刚刚将标记簇加上 gem 添加到我的列表中,它开始工作了!

在您的 Gemfile 中,添加以下行:

gem 'markerclustererplus-rails' 您可以通过将以下内容添加到您的 javascript 文件中来包含它:

//= 需要markerclusterer

参考: https ://github.com/RogerE/markerclustererplus-rails

于 2015-04-09T11:07:32.677 回答
0

我的问题是脚本由于 CSP 而被阻止。

我使用头盔来指定可以通过我的网站访问哪些 URL。

我刚刚将 'https://unpkg.com/@googlemaps/markerclustererplus/dist/index.min.js' 添加到 scriptSrc 列表中并且它起作用了。

从文档:

在此处输入图像描述

于 2021-08-04T10:58:33.243 回答