簡體   English   中英

如何在本機反應中離線使用谷歌地圖

[英]How to use google maps offline in react native

我正在嘗試使用戶能夠在我的本機應用程序中離線使用地圖,我正在使用react-native-maps

我想為預定義的區域(比如一個城市)提供離線模式,因此我需要下載所有需要的圖塊,這些圖塊將是大量圖像,所以我想知道谷歌地圖 API 中是否有辦法下載地圖的某個區域(如在谷歌地圖應用程序中)?
從文檔中可以啟用緩存,我做同樣的事情(根據文檔)但是,在我的情況下,我不想緩存用戶去的每個地方,因為我說我只想緩存/下載一個預定義的區域。
編輯 1
react-native-maps為此支持離線導航,我需要使用以下代碼:

 <LocalTile pathTemplate={this.state.pathTemplate} tileSize={256}/>

使用 pathTemplate 指向我的瓷磚位置,該位置必須具有以下層次結構:

location/{z}/{x}/{y}

因此我真正的問題是如何獲得我所在地區的瓷磚。
我可以通過從谷歌地圖瓦片服務器保存瓦片來手動完成,但是我不知道它是否合法,而且會花費大量時間和計算(放大時,我需要計算下一個的坐標瓷磚)
所以如果谷歌地圖 API 提供一種下載區域圖塊的方法(需要縮放),那就太好了,
另一種選擇是使用另一個地圖提供程序,如OpenStreetMAp ,但在這里,我也需要找到一種方法來一次下載所有圖塊

目前唯一支持離線映射的離線react-native模塊是react-native-mapbox-gl。

<MapView>
<LocalTile
pathTemplate="../pathToLocalStoredTile.png"
tileSize={126}
/>
</MapView>

這可能會給你一些支持。

由於 Google Maps SDK 沒有實現這一點,唯一的離線可能性是使用自定義圖塊。

如果你想下載故事,你可以使用 React-native MapBox 的 SnapShotManager。

參考 SnapShotManager 文檔: https : //github.com/react-native-mapbox-gl/maps/blob/master/docs/snapshotManager.md

// creates a temp file png of base map
const uri = await MapboxGL.snapshotManager.takeSnap({
  centerCoordinate: [-74.126410, 40.797968],
  width: width,
  height: height,
  zoomLevel: 12,
  pitch: 30,
  heading: 20,
  styleURL: MapboxGL.StyleURL.Dark,
  writeToDisk: true, // Create a temporary file
});

// creates base64 png of base map without logo
const uri = await MapboxGL.snapshotManager.takeSnap({
  centerCoordinate: [-74.126410, 40.797968],
  width: width,
  height: height,
  zoomLevel: 12,
  pitch: 30,
  heading: 20,
  styleURL: MapboxGL.StyleURL.Dark,
  withLogo: false, // Disable Mapbox logo (Android only)
});

// creates snapshot with bounds
const uri = await MapboxGL.snapshotManager.takeSnap({
  bounds: [[-74.126410, 40.797968], [-74.143727, 40.772177]],
  width: width,
  height: height,
  styleURL: MapboxGL.StyleURL.Dark,
});

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM