我有一个使用Google Maps API创建Map的网站,每次会随机突出显示一个国家,我目前突出显示国家的方法是使用data-driven styling创建boundary polygons:
Example of how the map should look
但是,Google最近开始抛出错误,称**displayName
**属性(我使用的)自2023年2月起不能再使用。以下是更改前代码的一个片段:
featureLayer.style = (options) => {
if (options.feature["displayName"] == "Italy") {
return featureStyleOptions;
}
};
在官方的解释中,**fetchPlace()
**函数应该只是用作替换because the fetchPlace() function also returns the displayName。
但是fetchPlace()不能用在同步函数中(它只返回promise),所以我尝试重写代码,在这次尝试中我使用了.then()方法,但是现在它根本不应用边界多边形:
featureLayer.style = (options) => {
options.feature.fetchPlace().then((Place) => {
if (Place["displayName"] == "Italy") {
return featureStyleOptions;
}
});
};
我对promises/.then()如何在JavaScript中工作以及它们如何处理值的知识有限,因此我可能完全错误地使用了这种方法。
理想情况下,我只会使用**PlaceId
**作为DisplayName的替代品,但我没有任何方法获得ID。我将感谢您对此问题的任何帮助。谢谢!
1条答案
按热度按时间t3psigkw1#
displayName
已过时,但placeId
尚未过时。下面是一个突出显示意大利的示例。要获得地点ID,可以使用Place ID finder。我添加了一个对Geocoder的调用,以便能够使Map适合要素。
关于
fetchPlace()
,文档规定:不要从
FeatureStyleFunction
调用它,因为只支持同步FeatureStyleFunctions
。