Android 如何将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

我正在尝试将OpenStreetMap集成到React本地项目中。但我找不到任何与React Native相关的库或任何内容

我能找到的唯一与这些主题相关的是下面的链接,其中没有正确的答案

但我听说Mapbox使用OpenStreetMap作为源代码。Mapbox提供了一种将其集成到React本机项目中的好方法:

有没有办法将OpenStreetMap集成到React本地项目中
或者是因为还没有适当的支持。

您可以在
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>
  );
}