博客 / 詳情

返回

Google I/O 2025 谷歌地圖升級:3D 地圖正式登陸移動設備

去年,谷歌地圖發佈了適用於 JavaScript 的逼真 3D 地圖(現已推出預覽版) ,為沉浸式 Web 地圖的新時代鋪平了道路。

在今年的 Google I/O 2025 會議上,谷歌地圖宣佈推出適用於 Android 和 iOS 的全新實驗版 Maps 3D SDK,將 3D 地圖擴展至原生移動領域,為 Web 和移動應用帶來沉浸式體驗。


一、真實世界畫布,體驗位置探索

3D 地圖為地圖開發者帶來了高分辨率、真實世界的畫布,現在移動開發者也能享受到這份便利。移動端實驗版本提供逼真的全球視圖,並以令人驚歎的 3D 細節展示了全球超過 2,500 座城市。

  • 動態 3D 視角控制

新增強大的靈活 3D 視角控制功能,讓您在地圖上擁有更強大的導航方式。您可以輕鬆調整並實現所選位置的視圖動畫。利用預設的相機路徑,如 “飛入 (flyTo)”和“環繞飛行 (flyAround)”,實現即時可用的動態場景過渡和導覽,幫助用户從全球宏觀視角到街區微觀層面理解位置信息。

  • 高性能 3D 渲染

依靠 Google 的高性能渲染技術,無論是展示地標、規劃城市基礎設施,還是構建品牌化交互應用,都能確保流暢、穩定且視覺驚豔的用户體驗。

  • 定製化底圖顯示

您可以精細控制地圖的視覺重點,確保 3D 地圖完美契合您應用程序的用途。這意味着用户既可以體驗到擁有驚豔實景照片的沉浸式地圖,也可以在熟悉的 Google 地圖標籤和地點 上獲得更多信息豐富的內容。與當前網頁版的 3D 地圖類似,您可以選擇顯示地點和地圖標註的混合模式 (Hybrid map mode) 來提供熟悉的上下文,或選擇僅顯示圖像的衞星模式 (Satellite mode) 來呈現專注的地圖視圖。


二、內置 3D 元素,實現移動可視化

藉助內置的 3D 元素,您可以提供身臨其境的品牌化地圖體驗,並無縫集成您自己的地理空間數據,為用户提供有意義的真實世界上下文。這些功能超越了簡單的可視化——使 3D 地圖成為強大的講故事媒介,引導用户穿越關鍵時刻和地點。對於開發者而言,簡化的自定義選項和配置工具讓您可以輕鬆調整每個視覺元素,以符合您的品牌和受眾,從而減少技術開銷並加速地圖開發

  • 靈活的標記
    3D 地圖中的標記(Markers)具有高度靈活性,支持多種海拔模式。這些標註元素使您能夠精確地在地圖中定位並突出顯示特定位置,精確控制每個標記相對於真實世界特徵的顯示方式——無論它是在屋頂上、地面上,還是懸浮於地形之上。
  • 情境疊加
    您可以輕鬆添加折線(polylines)和多邊形(polygons),高亮顯示路線、建築或感興趣的區域,從而增加地圖的上下文和清晰度。這些可定製的視覺元素讓您能夠強調特定的路徑或區域,使您的地圖不僅信息豐富,而且在視覺上也獨具特色。
  • 自定義 3D 模型
    您可以直接在地圖中渲染 gLTF 資產格式的自定義 3D 模型。這使得您能夠展示獨特的對象——如建築模型、品牌圖標或地理空間內容——在真實的世界畫布中,將您的數據生動呈現。

三、無縫集成與現代移動開發

在移動設備上開始使用 3D 地圖極其簡單,特別是如果您已經熟悉我們現有的地圖 SDK。只需在 Cloud 控制枱中啓用 Maps 3D SDK for AndroidMaps 3D SDK for iOS,即可開始使用 3D 地圖。只需一個 API 密鑰和幾行代碼,您就可以輕鬆在應用程序中顯示 3D 地圖視圖。

Maps 3D SDK for Android 在設計時就考慮到了現代開發,它優先支持 Kotlin,並通過 Google Play 服務自動交付新功能——無需重新發布應用程序即可獲得更新

Maps 3D SDK for iOS 則優先支持 Swift,允許開發者使用 SwiftUI 通過簡單的語法創建現代的、聲明式 UI,從而獲得更高的開發效率。

您可以嘗試以下的代碼示例來快速上手。每個 Kotlin 和 SwiftUI 示例都展示了以海拔、範圍、傾斜角和航向角等參數來觀察帝國大廈的 3D 地圖視圖。

Kotlin 示例:

class HelloMapActivity : Activity(), OnMap3DViewReadyCallback {
    private lateinit var map3DView: Map3DView

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        WindowCompat.setDecorFitsSystemWindows(window, false)
        setContentView(R.layout.activity_hello_map)

        map3DView = findViewById(R.id.map3dView)
        map3DView.onCreate(savedInstanceState)
        map3DView.getMap3DViewAsync(this)
    }

    override fun onMap3DViewReady(googleMap3D: GoogleMap3D) {
       googleMap3D.setCamera(
            camera {
                center = latLngAltitude {
                    latitude = 40.748339
                    longitude = -73.985912
                    altitude = 211.1
                }
                heading = 52.0
                tilt = 68.0
                range = 1039.0
            }
        )
        googleMap3D.setMapMode(Map3DMode.SATELLITE)
    }
}

SwiftUI 示例:

import SwiftUI
import GoogleMaps3D

struct Hello3DMapDemo: View {
  //initialize a camera looking at Manhattan
  @State private var camera: Camera =  .init(
    latitude: 40.748339, longitude: -73.985912, altitude: 211.1,
      heading: 52,
      tilt: 68,
      range: 1039
    )

  var body: some View {
    VStack(spacing: 0){
      //basic Map initialization
      Map(camera: $camera, mode: .satellite)
    }
  }
}

本次移動 3D 地圖 SDK 的發佈,標誌着移動端地圖體驗的全新升級。無論是想提升品牌形象優化用户交互,還是讓數據以更生動的方式呈現,全新的 Maps 3D SDK for Android 和 iOS 都將是您理想的工具!

聯繫 Cloud Ace ,開啓您的 3D 地圖創新之旅吧!

user avatar
0 位用戶收藏了這個故事!

發佈 評論

Some HTML is okay.