KML地图文件解析

KML文件

KML,即Keynote markup language,最初为Google定义的文件格式,用以描述地图中的关键数据,如路径、标记位置、叠加图层等信息。因此,使用KML文件可以记录一个简单的只包含街道、路径、多边形、标记位置等信息的简单地图,不包含高程、地形地貌等复杂信息。KML文件最终被OGC组织采纳为国际通行标准。

KML文件本质上是一个XML文件,完全遵循XML文件格式。但是,KML文件定义了几个特殊的元素标签,常用标签为:

Placemark:标记或路径

Linestring:路劲的坐标点

Point:标记位置的坐标

Coordinates:经纬度坐标

一个KML文件如下所示:

<?xml version="1.0" encoding="utf-8" ?>
<kml xmlns="http://www.opengis.net/kml/2.2">
<Document id="root_doc">
<Folder><name>高速公路</name>
  <Placemark>
	<name>卫岗隧道</name>
	<Style><LineStyle><color>ffff0000</color></LineStyle><PolyStyle><fill>0</fill></PolyStyle></Style>
      <LineString><coordinates>118.8385657,32.0429378 118.8338431,32.0439411</coordinates></LineString>
  </Placemark>
  <Placemark>
	<name>南京长江隧道</name>
	<Style><LineStyle><color>ffff0000</color></LineStyle><PolyStyle><fill>0</fill></PolyStyle></Style>
      <LineString><coordinates>118.67057150000001,32.0543862 118.6921381,32.0428005 118.6931683,32.0420084 118.6942853,32.0410913 118.6954844,32.0399309 118.6978042,32.037811</coordinates></LineString>
  </Placemark>
</Folder>
<Folder><name>市级地名</name>
  <Placemark>
	<name>南京市</name>
      <Point><coordinates>118.79126,32.06042</coordinates></Point>
  </Placemark>
  <Placemark>
	<name>马鞍山市</name>
      <Point><coordinates>118.49952,31.69933</coordinates></Point>
  </Placemark>
</Folder>

XML文件解析库TinyXML

既然KML文件是遵循XML文件格式的,因此可以使用XML解析器对KML文件进行解析。本文采用TinyXML。TinyXML是一款高效、高速的XML文件解析工具,TinyXML的说明文档为:

http://www.grinninglizard.com/tinyxmldocs/

由于后面均采用VS2010作为开发环境,建议对TinyXML进行编译生成其动态库Tinyxml.lib。编译时应选择/MD编译选项,否则会造成库冲突。

KML文件解析DLL封装·

KmlParser为封装的DLL,其类图如图所示。

使用KmlFile类的Open函数即可解析KML文件,解析的内容放在m_pKmlFolderVect中。

测试

使用KmlParser解析KML文件,测试结果如图。

.kml文件是一种Keyhole标记语言文件,它包含地理信息数据,通常用于地理信息系统(GIS)和地图应用程序中。在Android中解析.kml文件可以使用Android开发工具包(Android SDK)提供的类库和工具。 首先,我们需要使用KmlLayer类来读取和解析.kml文件KmlLayer类是Google Maps Android API中的一个类,它可以帮助我们将.kml文件中的地理信息数据显示在Google地图上。 其次,我们需要在AndroidManifest.xml文件中添加必要的权限,比如访问网络权限(INTERNET)和访问地理位置权限(ACCESS_FINE_LOCATION或ACCESS_COARSE_LOCATION),以便我们的应用程序可以获取地理信息数据并在地图上显示。 然后,我们可以使用KmlLayer类的构造函数来创建一个KmlLayer对象,并将.kml文件的URL或InputStream传递给构造函数。然后,我们可以将KmlLayer对象添加到Google地图中,从而显示.kml文件中的地理信息数据。 最后,我们可以通过设置一些属性和监听器来自定义地图上.kml文件中的数据的显示方式,比如改变标记的图标、弹出信息窗口等操作。 需要注意的是,解析.kml文件可能涉及到网络请求和文件I/O操作,因此我们需要在Android应用程序中使用异步任务(AsyncTask)或者Android中的其他异步处理机制来避免阻塞主线程,以确保应用程序的流畅性和稳定性。 总之,通过使用Android SDK提供的类库和工具,我们可以很方便地在Android应用程序中解析.kml文件,并将其中的地理信息数据显示在Google地图中。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值