【问题标题】:Add MyMaps map to an Android Fragment将 MyMaps 地图添加到 Android 片段
【发布时间】:2018-06-27 07:20:04
【问题描述】:

我目前正在进行一个项目,我需要将 Google My Maps 地图添加到片段中,但我已经搜索了一段时间,但一直无法想办法引入 URL。我的猜测是它应该是 GoogleMap 类中某处的方法。 另外,我注意到有一些方法,如 addPolygon 可以帮助实现与 MyMaps 地图类似的结果。但是,这将是一种非常混乱的方法,因为我必须添加许多坐标,并且会变得非常耗时。

谢谢!

【问题讨论】:

    标签: android google-maps android-fragments mymaps


    【解决方案1】:

    我不确定不保存 KML 文件并显示在Fragment 中的过程。

    但是通过手动下载如下所示的文件,我们可以包含 在 Fragment 中也是如此。


    现在在res 文件夹中创建文件夹raw。

    将下载的KML文件粘贴到raw文件夹中。

    更新谷歌地图的依赖如图。

    api 'com.google.maps.android:android-maps-utils:0.5'
    

    在您的片段中执行以下操作。

    KmlLayer kmlFile;
    
    public void onMapReady(GoogleMap googleMap) {
       ...............
       ...............
       try {
                kmlFile = new KmlLayer(googleMap, R.raw.my_map, getContext());
                kmlFile.addLayerToMap();
            } catch (XmlPullParserException e) {
                Log.e(TAG,""+e.toString());
            } catch (IOException e) {
                Log.e(TAG,""+e.toString());
            }
    }
    

    我用下面来显示正常的谷歌地图。此地图加载与在 Fragment 中显示地图的常规过程一样

    <com.google.android.gms.maps.MapView
                    android:id="@+id/placeOrderMap"
                    android:layout_width="match_parent"
                    android:layout_height="200dp"
    >
    </com.google.android.gms.maps.MapView>
    

    现在加载片段后,滑动到您创建 Google 我的地图的位置,您可以看到创建的地图 Pin / 图标等。

    根据您创建的元素,输出将如下所示。

    【讨论】:

    • 您好,您的方法在导出到 KML 时似乎运行良好。如果改为使用 KMZ 版本,为了保留图标,我从 XmlParser 收到错误:org.xmlpull.v1.XmlPullParserException: unterminated entity ref (position:TEXT @1:213 in java.io.InputStreamReader@df5ffa7 ) .如果我从生成的 KMZ 中提取 KML,它当然可以工作,但没有图标的图像。知道我是否需要为 kmz 使用特殊的东西吗?
    • 我对这些线一无所知。可能您可以将此特定问题发布为不同的线程。因为它比您的问题更具体将 MyMaps 地图添加到 Android 片段
    【解决方案2】:

    我的地图可视化不需要GoogleMap 对象。只需将WebView 添加到您的片段并通过共享 URL 将您的“我的地图”加载到其中:

    private WebView mMyMapWebView;
    ...
    
    mMyMapWebView = (WebView) findViewById(R.id.mymap_webview);
    mMyMapWebView.getSettings().setJavaScriptEnabled(true);
    mMyMapWebView.setWebViewClient(new WebViewClient());
    mMyMapWebView.loadUrl(<your_mymap__url_e.g. https://drive.google.com/open?id=...>);
    

    在.xmlWebView可以这样描述:

    <WebView
        android:id="@+id/mymap_webview"
        android:layout_width="match_parent"
        android:layout_height="match_parent"></WebView>
    

    您可以通过按“我的地图”控制面板上的“共享”按钮获取“我的地图”的共享 URL:

    在带有共享 URL 的窗口中,您还应该将访问权限从私有更改为“任何拥有链接的人”或公开:

    然后,在 Android 设备上你会得到类似的东西:

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-02-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-03-07
      相关资源
      最近更新 更多