gpt4 book ai didi

javascript - 尝试使用示例创建集群,但 addLayer 未定义

转载 作者:行者123 更新时间:2023-12-03 01:18:11 25 4
gpt4 key购买 nike

Here API clustering error: "addLayer is not defined"

错误我正在调用函数 startClustering,但收到错误 map.addLayer 未定义。

我认为 map 对象可能丢失了上下文范围,但是我如何才能传递正确的范围以从 map 访问 addLayer 函数。

    //Boilerplate map initialization code starts below:
var defaultLayers = platform.createDefaultLayers();

var map = new H.Map(document.getElementById('map'),
defaultLayers.normal.map, {
center: {
lat: -19.9211375,
lng: -43.9490617,
},
zoom: 6
});

var behavior = new H.mapevents.Behavior(new H.mapevents.MapEvents(map));

// create default UI with layers provided by the platform
var ui = H.ui.UI.createDefault(map, defaultLayers, 'pt-BR');

function startClustering(map, data) {
var dataPoints = data.map(function (item) {
return new H.clustering.DataPoint(item.coords.lat, item.coords.lng);
});

var clusteredDataProvider = new H.clustering.Provider(dataPoints, {
clusteringOptions: {
eps: 32,
minWeight: 2
}
});

var clusteringLayer = new H.map.layer.ObjectLayer(clusteredDataProvider);

map.addLayer(clusteringLayer);
}

startClustering(map, travelData);

最佳答案

我无法重现您观察到的“addLayer 未定义” 错误。由于您没有提供完整的列表(例如,travelData 未定义),我怀疑该问题可能无法在代码示例中演示以帮助您调试。

看起来您遵循了文档中的集群示例:

https://developer.here.com/api-explorer/maps-js/v3.0/clustering/marker-clustering

如果您怀疑存在范围问题,则无需将其包装在函数中。例如,这对我有用:

var platform = new H.service.Platform({
'app_id': 'your-app-id',
'app_code': 'your-app-code',
});

var defaultLayers = platform.createDefaultLayers();

var map = new H.Map(
document.getElementById('map'),
defaultLayers.normal.map, {
center: {lat: -19.9211375,
lng: -43.9490617},
zoom: 6,
});

var behavior = new H.mapevents.Behavior(new H.mapevents.MapEvents(map));

var ui = H.ui.UI.createDefault(map, defaultLayers, 'pt-BR');

var travelData = [
{lat: -19.8211, lng: -43.9490617},
{lat: -19.7211, lng: -43.9490617},
{lat: -19.6211, lng: -43.9490617},
{lat: -19.5211, lng: -43.9490617},
{lat: -19.4211, lng: -43.9490617},
{lat: -19.3211, lng: -43.9490617},
];

var dataPoints = travelData.map(function(item) {
return new H.clustering.DataPoint(item.lat, item.lng);
});

var clusteredDataProvider = new H.clustering.Provider(dataPoints, {
clusteringOptions: {eps: 32, minWeight: 2 }
});

var clusteringLayer = new H.map.layer.ObjectLayer(clusteredDataProvider);
map.addLayer(clusteringLayer);

这与我稍微简化的 travelData 并不完全相同,因此它可能取决于您的数据集。另外,请确保您在 HTML 中包含 mapjs-clustering.js 脚本,尽管您会看到类似 “H.clustering 未定义” 的错误(如果这是问题。

关于javascript - 尝试使用示例创建集群,但 addLayer 未定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51899752/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com