Javascript 谷歌地图数据层-获取标记数(功能)

Javascript 谷歌地图数据层-获取标记数(功能),javascript,google-maps,google-maps-api-3,Javascript,Google Maps,Google Maps Api 3,原始问题: 我使用数据层将geoJSON数据加载到地图中,我想在地图键图标旁边的某个位置显示加载的标记数。最好的方法是什么?是否有一种方法可以简单地获取数据层中的要素数量 修订问题: 我正在将多个数据层加载到变量(即memberLayer、trailLayer等)中,我想计算memberLayer中有多少个标记。如何从数据层获得标记的准确计数 google.maps.Data类支持迭代数据层中每个对象的forEach(callback:function(Data.Feature))函数。根据,功

原始问题:
我使用
数据层
将geoJSON数据加载到地图中,我想在地图键图标旁边的某个位置显示加载的标记数。最好的方法是什么?是否有一种方法可以简单地获取数据层中的要素数量

修订问题:

我正在将多个数据层加载到变量(即memberLayer、trailLayer等)中,我想计算memberLayer中有多少个标记。如何从数据层获得标记的准确计数

google.maps.Data类支持迭代数据层中每个对象的
forEach(callback:function(Data.Feature))
函数。根据,功能:

重复调用给定函数,在 在每次调用时,将集合添加到函数。迭代顺序 通过这些特征是未定义的

因此,要计算所有
标记
(假设
geojson
文件中的所有
功能
都是点,
map.data
是数据层),您可以使用以下代码:

var total = 0;
map.data.forEach(function(){ total++; });
console.log("In data layer, there's total of " + total + " features.");
编辑

如果您使用
loadGeoJson(url,选项?:Data.GeoJsonOptions,callback?:function(Array))
函数来加载geoJSON,您可以利用第三个参数
callback
,来获得该层中的功能数量,例如:


我不明白为什么这被标记为暂停。问题相当清楚。他使用数据层加载geojson的方法之一将标记加载为点位置,现在他想确定它们的数量。此外,上述评论中的链接与用户试图表达的内容完全不同achieve@Thinker如果我使用的是一个允许回调的服务,这就可以了。对于loadGeoJson方法,我看不到该选项。也许我遗漏了什么?尝试了这个,但我的数组是0<代码>尝试{var temp=[];memberLayer.forEach(函数(功能){temp.push[feature];})$(“#映射键a[layer='memberLayer']”)。追加(“+memberTotal+”);日志(temp);}捕获(err){log(err)}控制台日志显示:'[trails][Array[0]]0:Array[0]长度:1\uuuu proto\uuuuu:Array[0]'很抱歉格式化…我无法使代码块正常工作。刚刚看到我的错误…push[]not push()…仍然显示空数组幸运的是,没有。我正在加载多个数据层,因此我将每个数据层放在一个变量中(即memberLayer、trailLayer等).foreach函数可以工作,它只是不循环任何内容。我想知道在执行foreach之前是否需要某种侦听器来等待json数据加载,但我找不到任何此类侦听器。这取决于将geoJSON添加到数据层的方式。如果使用
loadGeoJson(url、选项、回调)
函数,然后您可以利用
callback
参数,这是一个在每次添加功能后都会被调用的函数。如果您使用
add
addGeoJson
,您可以在加载之前为数据层上的
addfeature
事件添加侦听器,并计算调用的次数。明白了!它不存在对功能进行评分它返回一个功能数组,所以我只需要得到数组的长度。
memberLayer.loadGeoJson('scripts/php/members_geojson.php',null,function(feature){log(“loadGeoJson”,feature.length);})
将此作为答案添加,我将对其进行投票。感谢您的帮助!
loadGeoJson("URL", {}, function(features){ 
     log("loadGeoJson finished, number of features:" + features.length);
});