我把谷歌地图嵌入到我的网站。一旦谷歌地图被加载,我需要启动一些JavaScript进程。
有没有办法自动检测当谷歌地图已完全加载,包括瓷砖下载和所有?
存在一个tilesloaded()方法,该方法应该完全完成这个任务,但它不起作用。
我把谷歌地图嵌入到我的网站。一旦谷歌地图被加载,我需要启动一些JavaScript进程。
有没有办法自动检测当谷歌地图已完全加载,包括瓷砖下载和所有?
存在一个tilesloaded()方法,该方法应该完全完成这个任务,但它不起作用。
当前回答
我需要它来计算地图边界,所以这对我来说已经足够了:
new ResizeObserver(()=> updateMapBounds()).observe(map.getDiv())
new IntersectionObserver(()=> updateMapBounds()).observe(map.getDiv())
updateMapBounds();
其他回答
如果你正在使用web组件,那么他们有这样一个例子:
map.addEventListener('google-map-ready', function(e) {
alert('Map loaded!');
});
我正在创建html5移动应用程序,我注意到空闲,bounds_changed和tilesloaded事件在地图对象创建和渲染时起火(即使它不可见)。
为了让我的地图在第一次显示时运行代码,我做了以下工作:
google.maps.event.addListenerOnce(map, 'tilesloaded', function(){
//this part runs when the mapobject is created and rendered
google.maps.event.addListenerOnce(map, 'tilesloaded', function(){
//this part runs when the mapobject shown for the first time
});
});
现在你知道地图准备好了没有:
void _onMapCreated(GoogleMapController controller) {
this.controller = controller;
_mapIsReady=true; //create this variable
}
从地图小部件调用此方法
return GoogleMap(
myLocationEnabled: true,
//markers: markers,
markers: Set<Marker>.of(markers.values),
onMapCreated: _onMapCreated,
initialCameraPosition: CameraPosition(
target: _initialPosition,
zoom: 5.0,
),
);
这让我在GMaps v3中困扰了一段时间。
我找到了一个这样做的方法:
google.maps.event.addListenerOnce(map, 'idle', function(){
// do something only the first time the map is loaded
});
当映射进入空闲状态时触发“idle”事件——所有内容都加载了(或加载失败)。我发现它比tilesloaded/bounds_changed和使用addListenerOnce方法更可靠,闭包中的代码在第一次“空闲”被触发时执行,然后事件被分离。
另请参阅谷歌地图参考中的事件部分。
我需要它来计算地图边界,所以这对我来说已经足够了:
new ResizeObserver(()=> updateMapBounds()).observe(map.getDiv())
new IntersectionObserver(()=> updateMapBounds()).observe(map.getDiv())
updateMapBounds();