在 React Native 中集成 Google 地图,并且运用到项目实例

随着移动互联网的发展,地图功能在应用中越来越重要,作为一名前端开发者,我们也需要掌握在移动端应用中集成地图的技能。本文将介绍如何在 React Native 中集成 Google 地图,并运用到项目实例中。

准备工作

在进行集成之前,我们需要完成以下准备工作:

  1. 安装 React Native 开发环境,可以参考官方文档:https://reactnative.dev/docs/environment-setup

  2. 申请并获取 Google 地图 API KEY,可以参考官方文档:https://developers.google.com/maps/gmp-get-started?hl=zh-cn

集成 Google 地图

接下来,我们来开始集成 Google 地图。

  1. 首先,我们需要安装 React Native 的第三方插件:react-native-maps
--- ------- ----------------- ------
  1. AndroidManifest.xml 中添加 Google 地图的权限和 API KEY。
---------------- ------------------------------------------------------ --
---------------- -------------------------------------------------------- --

----------
  ---------------------------------------------
  ------------------------------
  1. AppDelegate.m 中添加 Google 地图的 API KEY。
------------ -------------------------------
  1. 在代码中导入 MapView 并使用。
------ -------- - --------------- - ---- --------------------

---

-------- -
  ------ -
    --------
      --------------------------
      -------- ----- - --
      ---------
        --------- ---------
        ---------- ----------
        -------------- ------
        --------------- -------
      --
    --
  --
-

其中,MapView 是地图的主体,PROVIDER_GOOGLE 表示使用 Google 地图。

  1. 运行项目,如果看到了地图,那么恭喜你,已经成功集成 Google 地图了!

项目实战

下面,我们将介绍如何将 Google 地图应用到一个项目实例中。

我们需要实现一个地图应用,实现以下功能:

  • 在地图上显示当前位置
  • 点击地图上的标记可以查看当前位置信息
  • 在地图上添加标记并保存,并且可以查看标记详情

实现当前位置显示

在地图上显示当前位置我们需要使用到 RN 自带的 Geolocation API。

------ - ----------- - ---- ---------------

---

----- - -
  ------- -----
-

---

------------------ - -- -- -
  -------------------------------
    -------- -- -
      ---------------
        ------- -
          --------- -------------------------
          ---------- --------------------------
          -------------- ------
          --------------- -------
        --
      ---
    --
    ----- -- -
      -------------------
    --
    -
      ------------------- -----
      -------- ------
      ----------- -----
    -
  --
--

---

-------- -
  ------ -
    --------
      --------------------------
      -------- ----- - --
      --------------------------
    -
      ------------------ -- -
        ------- ------------------------------ --
      --
    ----------
  --
-

其中,getCurrentPosition 方法可以获取当前位置信息,Marker 是地图上的标记。

实现标记管理

我们需要实现三个页面:地图页面、添加标记页面、标记详情页面。

在地图页面中,我们需要实现以下功能:

  • 点击地图上的位置添加标记
  • 点击已有的标记可以查看详情
------ ------ - --------- - ---- --------
------ - ----- ------ - ---- ---------------
------ -------- - ------ - ---- --------------------
------ - ------- - ---- ---------------------------

----- --- ------- --------- -
  ----- - -
    -------- ---
  -

  ----------- - ----- -- -
    ----- - ---------- - - ------------------
    ----------------------- -- --
      -------- -
        ---------------------
        -
          -----------
          ---- ----------------------
        --
      --
    ----
  --

  ----------------- - ------ -- -
    ---------------------------- --------
  --

  -------- -
    ------ -
      ----- -------- ----- - ---
        --------
          -------- ----- - --
          ----------------
            --------- ---------
            ---------- ----------
            -------------- ------
            --------------- -------
          --
          --------------------------
        -
          ------------------------------ -- -
            -------
              ----------------
              ------------------------------
              ----------- -- -------------------------------
            --
          ---
        ----------
        -------
          ---------- -------
          ----------- -- --------------------------
        --
      -------
    --
  -
-

------ ------- ----

其中,handlePress 方法可以添加标记,handleMarkerPress 方法可以跳转到标记详情页面。

在添加标记页面,我们需要实现以下功能:

  • 可以输入标记名称和描述
  • 点击保存保存标记信息,并返回地图页面
------ ------ - --------- - ---- --------
------ - ----- ---------- ------ - ---- ---------------
------ - ------- - ---- ---------------------------

----- --------- ------- --------- -
  ----- - -
    ----- ---
    ------------ ---
  -

  ---------- - -- -- -
    ----- - ----- ----------- - - -----------
    ----- - ---------- - - -----------

    --------------
    ----------------- ----- ------------ ---------- ---
  --

  -------- -
    ------ -
      ------
        ----------
          ------------------
          ------------------ -- --------------- ---- ---
        --
        ----------
          -------------------------
          ------------------------- -- --------------- ----------- ---
        --
        -------
          ------------
          -------------------------
        --
      -------
    --
  -
-

------ ------- ----------

其中,handleSave 方法可以保存标记信息并返回地图页面。

在标记详情页面,我们需要实现以下功能:

  • 显示标记名称和描述
  • 可以删除当前标记
------ ------ - --------- - ---- --------
------ - ----- ----- ------ - ---- ---------------
------ - ------- - ---- ---------------------------

----- ------------ ------- --------- -
  ------------ - -- -- -
    ----- - ---------- - - -----------

    --------------
    ----------------- ---------- ---
  --

  -------- -
    ----- - ----- ----------- - - -----------

    ------ -
      ------
        -------------------
        --------------------------
        -------
          --------------
          ---------------------------
        --
      -------
    --
  -
-

------ ------- -------------

其中,handleDelete 方法可以删除标记并返回地图页面。

最后,我们需要使用 react-native-router-flux 这个第三方库来实现页面跳转。

------ ----- ---- --------
------ - ------- ----- - ---- ---------------------------
------ --- ---- --------
------ --------- ---- --------------
------ ------------ ---- -----------------

----- --- - -- -- -
  --------
    ------ -----------
      ------ --------- --------------- ----------- --
      ------ --------------- --------------------- ---------- ------- --
      ------ ------------------ ------------------------ ------------- ------- --
    --------
  ---------
--

------ ------- ----

至此,我们已经完成了一个简单的地图应用,完整代码可以在 GitHub 上查看:https://github.com/zhangtao107258/react-native-google-maps-example

总结

在 React Native 中集成 Google 地图并不是一件很困难的事情,只需要按照以上步骤,就可以成功实现地图的显示。但是,在实际项目中,我们需要更多的功能和细节处理,比如:地图控制、地图样式、地图交互等等,这些需要我们在实践中慢慢掌握。希望本文中的项目实例能对你有所启发,让你更好的理解如何在 React Native 中集成 Google 地图。

来源:JavaScript中文网 ,转载请注明来源 本文地址:https://www.javascriptcn.com/post/66473dddd3423812e458ac73