gpt4 book ai didi

javascript - 如何确定 Google Maps loadGeoJson 何时完成?

转载 作者:搜寻专家 更新时间:2023-10-30 20:54:10 24 4
gpt4 key购买 nike

我有一个用户可以存储他们的映射样式的场景。当用户导航回带有 map 的那个页面时,它应该以以前的方式显示 map 。

用户可以更改地理和边界的颜色,也可以根据人口统计信息应用主题样式。

随着新的 loadGeoJson 的发布,我在加速我的应用程序方面取得了巨大的成功,最初我是通过 JS 自己绘制所有的地理位置。这导致了大约 1500 个地区的一些内存问题。这个新功能大大减少了它。我选择在服务器端生成 Features 对象,然后将 URL 传递给 map 进行渲染。此 URL 与所有其他样式信息一起传递,以重建 map ,就像以前一样。

我遇到的问题是,当我尝试应用样式时, map 尚未检索到要在 map 上显示的要素列表。

查看文档时,我没有看到任何专门针对 loadGeoJson 方法的事件,但确实看到了 addfeature 和 setgeometry,但是在使用 loadGeoJson 方法时这些事件都没有引发。

这一切都是用 Typescript 编写的,并试图遵守非常严格的 MVVM 方法,使用 Knockout 通过绑定(bind)为我处理所有 UI 更改。

我是否可以关联另一个事件来查看此方法何时完成,以便我可以适本地应用我的样式?

是否有另一种方法可以让我在某个地方“等待”烘烤? .

最佳答案

addfeature 事件肯定是由 loadGeoJson 调用的,如果不是您的设置错误。

loadGeoJson 有一个可选的回调参数,它在加载所有功能后调用,并将功能作为参数。

https://developers.google.com/maps/documentation/javascript/3.exp/reference

loadGeoJson(url:string, options?:Data.GeoJsonOptions, callback?:function(Array))

您可以从此回调中向您的代码发出信号,表明它可以继续处理。

map.data.loadGeoJson('google.json', null, function (features) {
map.fitBounds(bounds); // or do other stuff what requires all features loaded
});

您还可以将 loadGeoJson 包装到一个 promise 中,并在 loadGeoJson 的回调中解析该 promise 。

function loadGeoJson(url, options) {
var promise = new Promise(function (resolve, reject) {
try {
map.data.loadGeoJson(url, options, function (features) {
resolve(features);
});
} catch (e) {
reject(e);
}
});

return promise;
}

// Somewhere else in your code:
var promise = loadGeoJson('studs.json');

promise.then(function (features) {
// Do stuff
});

promise.catch(function (error) {
// Handle error
});

关于javascript - 如何确定 Google Maps loadGeoJson 何时完成?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23071590/

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