【问题标题】:KML layer doesn't match with map shape in Android Google Maps APIKML 图层与 Android Google Maps API 中的地图形状不匹配
【发布时间】:2017-05-18 11:27:34
【问题描述】:

我正在开发一个 Android 应用程序,并且我正在使用 Google Maps Android API 来显示我在西班牙使用 ArcGIS 制作的 KML 图层。我通过将文件地理数据库栅格数据集导出到 KML 使用 ArcGIS 创建了该图层。 ArcGIS 中文件的空间参考位于 ED_1950_UTM_Zone_30N(投影坐标系)中,形状为西班牙。

问题:该图层在我的应用地图中正确显示,但图层的形状与国家/地区的形状不完全匹配(见附图)但是,当我在 PC Windows 桌面版和 Android 版 Google 地球中打开此 KML 时,KML 图层会完美地适应国家/地区地图边界。

我在 GitHub 上报告了这个问题,但没有答案:https://github.com/googlemaps/android-maps-utils/issues/394

这是我添加 KML 层的一段代码:

try {
                    mMap.clear();
                    KmlLayer layer = new KmlLayer(mMap, R.raw.kriging_sqri, getApplicationContext());
                    layer.addLayerToMap();
                    mapModeKML = true;
                } catch (XmlPullParserException e) {
                    e.printStackTrace();
                } catch (IOException e) {
                    e.printStackTrace();
                }

这是我的 kriging_sqri.kml 文件的内容,位于 res/raw:

<?xml version="1.0" encoding="UTF-8"?>
<kml xmlns="http://www.opengis.net/kml/2.2" xmlns:gx="http://www.google.com/kml/ext/2.2" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 xsi:schemaLocation="http://www.opengis.net/kml/2.2 http://schemas.opengis.net/kml/2.2.0/ogckml22.xsd http://www.google.com/kml/ext/2.2 http://code.google.com/apis/kml/schema/kml22gx.xsd">
<Document id="Kriging_shp3_Clip">
  <name>Kriging_shp3_Clip</name>
  <Snippet></Snippet>
  <GroundOverlay id="0">
    <Snippet></Snippet>
    <drawOrder>1000</drawOrder>
    <name>Kriging_shp3_Clip</name>
    <Icon>
      <href>file:///storage/emulated/0/BioApp/Layer0.png</href>
      <viewBoundScale>1.0</viewBoundScale>
    </Icon>
    <LatLonBox>
      <north>44.67706278743195</north>
      <south>35.085026094869</south>
      <east>6.152473147346782</east>
      <west>-10.78014121100213</west>
      <rotation>0</rotation>
    </LatLonBox>
  </GroundOverlay>
</Document>
</kml>

这就是我的应用程序显示 KML 图层的方式(注意它的形状与国家/地区的陆地边界不匹配,在其南部和东海岸特别显着)。

但同样的 KML 可以在 Google 地球应用程序中正确显示(我已经在桌面和 Android 版本上尝试过)。这是它在 Google 地球的 Android 应用中的外观:

任何帮助将不胜感激!

【问题讨论】:

    标签: android google-maps-android-api-2 kml


    【解决方案1】:

    导出到 KML 时,您应该始终先将数据转换为 WGS84 (EPSG 4326)。尝试重新投影您的数据,然后再次导出到 KML。如果这不起作用,请告诉我们,并请共享新 KML 和图像文件(上面示例中的“Layer0.png”)的副本,以便我们查看数据并帮助调试。

    【讨论】:

    • 谢谢!我会尝试并发表评论以分享结果。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-06-27
    • 2011-02-20
    • 1970-01-01
    • 1970-01-01
    • 2013-06-28
    • 1970-01-01
    • 2016-08-20
    相关资源
    最近更新 更多