xml - 如何在 React 框架中将不透明度应用于 Google 地图之上的 KML 层?
问题描述
我遇到了 2 个问题: 1. 如何使用 React 框架将不透明度应用于 Google 地图之上的 KML 层?2. 我有一组由 KML 层调用的 731 张图片,Google 要求这些图片需要通过可公开访问的 URL 进行访问。我将它们托管在 AWS S3 上,但我已经用完了免费配额,我只在我的计算机上进行本地测试。如果我明天有成百上千的用户,我该如何实施可扩展的解决方案?
开发环境:React v16.6.1、react-google-maps/api v1.6.0、node v10.10.0、MacBook Pro 13英寸2011年初
我尝试了以下方法: 1. 在 React 中使用 CSS 类应用不透明度。2. 在 React 中使用 CSS ID 应用不透明度。
有人建议通过先将图像转换为 .png 然后通过 KML 文件调用它们来修改图像的不透明度。但是做731张图片是很讲究的。
这是有关代码和框的问题的最小再现: https ://codesandbox.io/embed/jolly-wilson-slhed
return (
<LoadScript
googleMapsApiKey="Google Maps API Key"
>
<GoogleMap
center={{ lat: this.state.lat, lng: this.state.lng }}
mapContainerStyle={mapContainerStyle}
options={mapOptions}
zoom={4}>
<KmlLayer
url="https://nightskybrightness.s3.eu-west-
3.amazonaws.com/artificialNightSkyBrightness_example.kml">
</KmlLayer>
</GoogleMap>
</LoadScript>
)
预期结果:具有 40% 不透明度的 KML 层和可针对数百或数千用户进行扩展的解决方案。
实际结果:具有 100% 不透明度的 KML,并且我已经消耗了 AWS S3 上的免费配额。
解决方案
使用 CSS 方法,在您的代码框示例中,在文件中styles.css
添加以下 CSS 规则:
.App img[src*='googleusercontent.com']{
opacity: .4;
}
要实施可扩展的解决方案,我强烈建议您在最终用户和亚马逊 S3 之间放置一个 CDN。我个人使用 Cloudflare,并且有一个免费计划。试试看!
推荐阅读
- typescript - 你能指定一个属性必须在接口中保存某个值吗?
- php - 我正在使用 C 语言的 libcurl 库编写一个 REST API 来登录我的网页
- r - shinyApp(ui,服务器)中的错误:shinyApp 中缺少“服务器”
- c# - 在 WinForms 中使用 EasyTabs 的带有 Chrome 样式标签的应用程序
- dart - 如何使用动态日期使用 Dart 的差异方法和 DateTime?
- ios - 如何在 iOS 中测试您的延迟深层链接
- php - “方法 [validateEach] 不存在” Laravel 4.2
- java - 如何使用许多 OR 动态构建 booleanbuilder 条件
- r - 修改通过 ggplotly 创建的绘图图的工具提示信息
- php - Laravel 使用会话重定向