添加标记时,googlemaps-js-api会阻塞ui
google maps js api blocks ui when adding markers
我在移动浏览器上使用谷歌地图时遇到问题。
我正在进行的项目需要在地图上显示大约500个标记,但当添加它们时,ui会冻结。
我正在使用markcluster添加标记,一旦标记出现在页面上,性能就很好。有没有一种方法可以异步添加标记,或者在用户开始滚动后暂停添加标记?
这是我们正在使用的代码:
var mcOptions = { gridSize: 50, maxZoom: 15, zoomOnClick: false };
var mc = new MarkerClusterer(context.map, [], mcOptions);
getMarkerLocations().then(function(branches){
branches.forEach(function(branch) => {
var marker = new google.maps.Marker({
icon: {
path: google.maps.SymbolPath.CIRCLE,
scale: 2,
strokeColor: 'red',
fillColor: 'red',
strokeWeight: 2,
fillOpacity: 1
},
position: new google.maps.LatLng(branch.Latitude, branch.Longitude),
visible: true
});
mc.addMarker(marker);
});
});
谢谢你的地理编码,这就像一个魅力!对于其他有同样问题的人,以下是我解决问题的方法:
.then(function(branches){
var loopFunction = function(branchesToAdd) => {
if (branchesToAdd.length === 0) return;
var item = branchesToAdd.pop();
var marker = new google.maps.Marker({
....
});
mc.addMarker(marker);
setTimeout(function(){loopFunction(branchesToAdd)}, 30);
};
loopFunction(branchesToShow);
});
异步添加标记,使用setTimeout计划添加每个标记,这将给浏览器一些时间来渲染和响应UI。
相关文章:
- 谷歌地图JS API+JSON-多个标记没有显示
- 如何仅在ui-grid.js中显示特定列
- 引用单个表的多列 - Sails JS API 模型
- 如何使用YouTube js API在同一个嵌入式播放器中背靠背播放多个视频
- 解析推送通知-如何从REST或JS API跟踪打开
- 使用Modal UI覆盖JS Alert()消息
- 在运行时启动jquery-ui.toggleSwitch.js切换开关
- "现代的“;在Google Maps JS API v3上使用字母标记
- Googlemaps Javascript API KML layer - Using Open charge map
- 使用 API 注册创建节点.js API 框架
- 打开 UI5 sap-ui-core.js无法加载资源
- Google Maps JS API v3 - Add Map Types
- HERE 映射 JS API v3 集群提供程序挂起,添加许多数据点
- MapQuest JS API-通过密切关注点列表来获取方向
- 如何使用地点ID从Google Places JS API检索地点详细信息
- 授权客户端JS API调用Google'的具有现有访问令牌的gap库
- Gerrit-如何通过JS API扩展UI
- Facebook JS API:任何对FB.ui的调用都返回错误代码:191
- 添加标记时,googlemaps-js-api会阻塞ui
- filepicker.io JS API v2使用裁剪UI在pick调用之后转换调用时出现错误142