react-native - react-native-maps - OpenStreetMap 的分辨率非常低
问题描述
我在 React Native 中使用 react-native-maps 并且我想使用 OpenStreetMap(因为 Google Map 对于商业项目来说非常昂贵)。MapView 给出了非常低分辨率的图块,图块和标签非常模糊(见下图)。
此代码与 Google 地图完美配合:
import MapView, {
MAP_TYPES,
PROVIDER_DEFAULT,
PROVIDER_GOOGLE,
} from "react-native-maps";
...
<MapView
ref={(map) => (currentMap = map)}
initialRegion={location}
showsUserLocation
style={{
height: Globals.Layout.window.height,
width: Globals.Layout.window.width,
}}
></MapView>
更改为使用 OpenStreetMap,您会得到正确的图块,但一切都模糊且分辨率低:
import MapView, {
MAP_TYPES,
PROVIDER_DEFAULT,
PROVIDER_GOOGLE,
} from "react-native-maps";
...
<MapView
ref={(map) => (currentMap = map)}
initialRegion={location}
showsUserLocation
provider={PROVIDER_DEFAULT}
mapType={MAP_TYPES.NONE}
style={{
height: Globals.Layout.window.height,
width: Globals.Layout.window.width,
}}
>
<MapView.UrlTile
urlTemplate={"http://a.tile.openstreetmap.org/{z}/{x}/{y}.png"}
shouldReplaceMapContent={true}
/>
</MapView>
环境信息:
- 反应:~16.9.0 => 16.9.0
- 反应原生:0.61.4
- 反应原生地图:0.26.1
如何使图块的分辨率更高(或模拟缩小?)
解决方案
从您的屏幕截图中,我看到尚未加载的更高缩放比例的图块。相反,您的应用程序使用较低缩放和比例的图块,而不是加载正确的图块。您的问题是您使用 openstreetmap.org 作为平铺源,这是一个糟糕的商业理念。他们的基础设施完全超载。openstreetmap.org 还会及时更新他们的数据并在数据发生更改时重新渲染图块以支持映射器。但这使得它对于只想显示地图的外部应用程序毫无用处。
使用基于 OSM 数据但针对网站和应用程序进行了优化的不同切片提供程序,并以智能方式缓存切片以实现快速交付。这将花费一些钱,但远低于 G Maps。
推荐阅读
- amazon-web-services - .StartExecution 不是函数
- r - R ggplot geom_col 绘制一个变量的比例
- sql - 从所有组中返回 1 行
- matlab - 在 Octave 中调用向量化操作以获得多个输出
- javascript - 如何在VSCODE中将反斜杠更改为前斜杠?
- javascript - pm2 文件夹路径和多个运行脚本
- julia - 朱莉娅有克罗内克三角洲吗?
- python - 如何在随机选择函数中读取包含两列的行文件
- apache-nifi - 如何在 nifi 中为 csv 文件生成 Avro 模式
- powershell - PowerShell Studio exe不会在打包的exe中按下按钮时启动新的Windows窗体