Google Map API V3-MarkerCluster 未定义
Posted
技术标签:
【中文标题】Google Map API V3-MarkerCluster 未定义【英文标题】:Google Map API V3- MarkerClusterer undefined 【发布时间】:2013-06-15 18:00:04 【问题描述】:我按照图书馆和 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>
我哪里做错了?
【问题讨论】:
您确定您的 markerclusterer.js / markerclusterer_compiled.js 文件被正确调用了吗?在尝试引用 MarkerClusterer 类之前,是否需要对其进行初始化? 另外,你从哪里调用 Trace_Pin 函数?这在这段代码中并不明显 - 您是否需要调整它以等待 markercluster JS 文件在尝试调用该函数之前加载? 我发现我需要从谷歌库 [google-maps-utility-library-v3.googlecode.com/svn/trunk/… 下载 markerclusterer.js 并将其上传到服务器,然后只需将其添加到<script src="markerclusterer.js" type="text/javascript"></script>
即可解决问题。感谢您的帮助:)
关于编译的,我从一个例子中复制过来的,我的不好。 Trace_Pin 是我在程序中单击按钮时调用的函数。
【参考方案1】:
我发现我需要从谷歌库下载 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>
【讨论】:
这修复了它,但有人可以解释加载此脚本背后的异步问题吗?因为有时刷新时它不起作用,但刷新缓存总是有效的。 链接坏了,在这里找到它:cdn.rawgit.com/googlemaps/js-marker-clusterer/gh-pages/src/…,更多关于使用 cdn 的信息在这里***.com/questions/37180731/…【参考方案2】:我刚刚将标记集群和 gem 添加到我的列表中,它开始工作了!
在您的 Gemfile 中,添加以下行:
gem 'markerclustererplus-rails' 您可以通过将以下内容添加到您的 javascript 文件中来包含它:
//= 需要markerclusterer
参考: https://github.com/RogerE/markerclustererplus-rails
【讨论】:
【参考方案3】:我的问题是脚本因为 CSP 而被阻止。
我使用头盔来指定可以通过我的网站访问哪些 URL。
我刚刚添加了“https://unpkg.com/@googlemaps/markerclustererplus/dist/index.min.js” 到 scriptSrc 列表,它工作。
来自文档:
【讨论】:
以上是关于Google Map API V3-MarkerCluster 未定义的主要内容,如果未能解决你的问题,请参考以下文章
Google Map API 无法插入到 url,包括 Google Map Json