Android 如何将OpenStreetMap集成到react本地项目中?
我正在尝试将OpenStreetMap集成到React本地项目中。但我找不到任何与React Native相关的库或任何内容 我能找到的唯一与这些主题相关的是下面的链接,其中没有正确的答案 但我听说Mapbox使用OpenStreetMap作为源代码。Mapbox提供了一种将其集成到React本机项目中的好方法: 有没有办法将OpenStreetMap集成到React本地项目中Android 如何将OpenStreetMap集成到react本地项目中?,android,ios,react-native,mapbox,openstreetmap,Android,Ios,React Native,Mapbox,Openstreetmap,我正在尝试将OpenStreetMap集成到React本地项目中。但我找不到任何与React Native相关的库或任何内容 我能找到的唯一与这些主题相关的是下面的链接,其中没有正确的答案 但我听说Mapbox使用OpenStreetMap作为源代码。Mapbox提供了一种将其集成到React本机项目中的好方法: 有没有办法将OpenStreetMap集成到React本地项目中 或者是因为还没有适当的支持。您可以在react native maps包中使用自定义的平铺覆盖(也可以使用Open
或者是因为还没有适当的支持。您可以在
react native maps
包中使用自定义的平铺覆盖(也可以使用OpenStreetMap):
(使用自定义平铺覆盖滚动到部分)
您需要添加api密钥。您根本不需要使用Maps API,在这种情况下不会使用密钥。使用Mapbox GL
另一个选项是使用,这是免费的,只要您不使用Mapbox平台中的任何东西。与其他选项不同,这不需要API密钥()
关于Mapbox,经常会出现混淆,因为平台(全局样式、瓷砖集、数据集、Mapbox Studio等)是付费的,但Mapbox GL是一个库,您可以使用它来显示自托管或由Mapbox平台托管的内容
下面是一个使用的代码段(也是基于OSM的):
render(){
常数rasterSourceProps={
id:“stamenWatercolorSource”,
tileUrlTemplates:[
'https://stamen-tiles.a.ssl.fastly.net/watercolor/{z} /{x}/{y}.jpg',
],
瓷砖尺寸:256,
};
返回(
);
}
其他选择
如前所述,React Native(Android和iOS)的另一个选项是
不过,如果你不显示谷歌地图,那么你是否必须使用谷歌API键才能使用这个库,这充其量也不清楚:谷歌表示,但
react native maps
似乎使用了一个名为drop-in-maps SDK的替代品,该替代品支持其他提供商,并声称你只需要在Android上安装本机地图SDK“以支持本机谷歌地图”. 为了安全起见,大多数人最终都会在Google上建立一个计费帐户来生成API密钥(即使你不打算计算一个地图视图),这是Mapbox不需要的。你有没有得到任何线索或代码来集成react native中的开放地图?没有,我不得不使用Mapbox。因为mapbox使用OpenStreetMapBox,您需要为mapbox付费吗?有什么限制吗?它可以用于商业吗?是的,如果你打算将其商业化,你必须为此付费。软件包显示在他们的网站上。我相信标准软件包可以完成你想要的工作。我尝试了这个库,但为什么它需要谷歌地图API密钥?我正在使用自定义OSM磁贴服务器!所以这基本上还是使用谷歌地图api键,对吗?@OliverD只是设置了一个谷歌api键,但不允许渲染谷歌瓷砖。您还可以更改画布填充或边距以隐藏google徽标。@VahidAlimohamadi很遗憾,google不接受我的客户visa卡,因此我无法获得密钥:(如果没有钥匙或谷歌地图,我不知道如何处理它。)services@OliverD只需在谷歌地图中创建一个免费令牌。您将不会呈现谷歌分幅,因此您不必担心过载免费令牌。
render() {
const rasterSourceProps = {
id: 'stamenWatercolorSource',
tileUrlTemplates: [
'https://stamen-tiles.a.ssl.fastly.net/watercolor/{z}/{x}/{y}.jpg',
],
tileSize: 256,
};
return (
<MapboxGL.MapView style={sheet.matchParent}>
<MapboxGL.Camera
zoomLevel={16}
/>
<MapboxGL.RasterSource {...rasterSourceProps}>
<MapboxGL.RasterLayer
id="stamenWatercolorLayer"
sourceID="stamenWatercolorSource"
style={{rasterOpacity: this.state.opacity}}
/>
</MapboxGL.RasterSource>
</MapboxGL.MapView>
);
}