我尝试在我的应用程序中使用clastering,但是我收到一个未定义addLayer的错误消息。”
我不知道如何解决此问题。
我只是从Here API示例api集群中复制并粘贴此示例函数
然后我将lat和lng传递给函数,但addLayer未定义。
我有map对象,但是addLayer未定义。
function startClustering(map, data) {
// First we need to create an array of DataPoint objects,
// for the ClusterProvider
var dataPoints = data.map(function(item) {
return new H.clustering.DataPoint(item.latitude, item.longitude);
});
// Create a clustering provider with custom options for clusterizing the input
var clusteredDataProvider = new H.clustering.Provider(dataPoints, {
clusteringOptions: {
// Maximum radius of the neighbourhood
eps: 32,
// minimum weight of points required to form a cluster
minWeight: 2
}
});
// Create a layer tha will consume objects from our clustering provider
var clusteringLayer = new H.map.layer.ObjectLayer(clusteredDataProvider);
// To make objects from clustering provder visible,
// we need to add our layer to the map
map.addLayer(clusteringLayer);
}
然后我将lat和lng传递给函数,但addLayer未定义。
我有地图对象,胸围不存在addLayer。
我嵌入了脚本
<script type="text/javascript" src="https://js.api.here.com/v3/3.0/mapsjs-clustering.js"></script>
在我的索引上。
我不知道如何解决此问题。
如果有人知道如何解决,我很乐意倾听
编辑:每个评论请求的其他代码:
function addMarkerToCameraGroup(map, coordinate, html) { // add and remove markers
document.querySelector(".camera-box").addEventListener("click", function() {
if (document.getElementsByClassName("camera-marker-position")[0] === undefined) {
map.addObject(cameraMarker);
self.startClustering(map, coordinate);
} else {
map.removeAll();
}
});
}
答案 0 :(得分:0)
您第二次以"Try to create a cluster unsing a sample but addLayer got undefinied"的身份提出此问题,该问题未包含其中的一些详细信息。但是,考虑到您对这个问题所做的其他编辑/上下文,似乎您正在添加事件侦听器,其中map
可能超出范围或尚未为匿名函数内部的可见性定义。
document.querySelector(".camera-box").addEventListener("click", function() {
if (document.getElementsByClassName("camera-marker-position")[0] === undefined) {
map.addObject(cameraMarker);
self.startClustering(map, coordinate);
} else {
map.removeAll();
}
});
您可以进行打字检查,以查看单击事件发生时是否已定义地图,并且/或者确认它是否为H.map
。在没有看到完整列表的情况下,也可能是因为您没有将map
设置为全局变量,而是在页面初始化的其他位置声明了它,所以在触发click事件时超出了范围。
您可以检查JavaScript callback scope以获得有关闭包的详细信息,在声明函数时可以在事件中提供map
。有关更多常规信息:JavaScript HTML DOM EventListener