我可以解析kml文件以显示Android中的路径或点吗?请你能帮助我吗?
这是kml示例代码,我想在android谷歌地图中显示:
<?xml version="1.0" encoding="UTF-8"?>
<kml xmlns="http://www.opengis.net/kml/2.2">
<Document>
<name>Paths</name>
<description>Examples of paths. Note that the tessellate tag is by default
set to 0. If you want to create tessellated lines, they must be authored
(or edited) directly in KML.</description>
<Style id="yellowLineGreenPoly">
<LineStyle>
<color>7f00ffff</color>
<width>4</width>
</LineStyle>
<PolyStyle>
<color>7f00ff00</color>
</PolyStyle>
</Style>
<Placemark>
<name>Absolute Extruded</name>
<description>Transparent green wall with yellow outlines</description>
<styleUrl>#yellowLineGreenPoly</styleUrl>
<LineString>
<extrude>1</extrude>
<tessellate>1</tessellate>
<altitudeMode>absolute</altitudeMode>
<coordinates> -112.2550785337791,36.07954952145647,2357
-112.2549277039738,36.08117083492122,2357
-112.2552505069063,36.08260761307279,2357
-112.2564540158376,36.08395660588506,2357
-112.2580238976449,36.08511401044813,2357
-112.2595218489022,36.08584355239394,2357
-112.2608216347552,36.08612634548589,2357
-112.262073428656,36.08626019085147,2357
-112.2633204928495,36.08621519860091,2357
-112.2644963846444,36.08627897945274,2357
-112.2656969554589,36.08649599090644,2357
</coordinates>
<LineString>
</Placemark>
</Document>
</kml> …
Run Code Online (Sandbox Code Playgroud) 在Google地图中叠加shapefile的最佳方法是什么?
经过一些阅读建议,将shapefile转换为KML并在Google地图中叠加KML是一种选择.如果是这种情况,我如何将shapefile转换为KML?
我相信会有一些开源工具可用于此转换.任何人都可以指向一个工具来将shapefile转换为KML而不会丢失任何数据吗?
我创建了一个hello world程序来加载一个本地kml文件(借用谷歌的文档):
var ctaLayer = new google.maps.KmlLayer("http://localhost:8080/kml/cta.kml");
Run Code Online (Sandbox Code Playgroud)
这不起作用(没有任何东西被加载).
但是,当我将该行更改为:
var ctaLayer = new google.maps.KmlLayer("http://gmaps-samples.googlecode.com/svn/trunk/ggeoxml/cta.kml");
Run Code Online (Sandbox Code Playgroud)
它正确加载.两个kml文件都是相同的.在自己提供服务时,我需要做些什么来加载它?(我尝试了绝对和相对路径,我知道我使用的路径是正确的......)
我还在我的appserver的配置文件中添加了正确的mime类型:
<mime-mapping>
<extension>kml</extension>
<mime-type>application/vnd.google-earth.kml+xml</mime-type>
</mime-mapping>
<mime-mapping>
<extension>kmz</extension>
<mime-type>application/vnd.google-earth.kmz</mime-type>
</mime-mapping>
Run Code Online (Sandbox Code Playgroud)
但它仍然没有加载.
我在谷歌的文档中发现了这个:
Google Maps API支持用于显示地理信息的KML和GeoRSS数据格式.这些数据格式使用KmlLayer对象显示在地图上,该对象的构造函数采用可公开访问的KML或GeoRSS文件的URL.
所以,我想什么,我试图做的是没有可能的,而不从公开访问的网址服务的KML ......除非有人能够证明否则
在我的应用程序中我从webserver下载kml文件.我已经在我的android清单文件中设置了外部存储和互联网的权限.我是android的新手,非常感谢你的帮助
MainActivity.java
package com.example.demo;
import java.io.DataInputStream;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.MalformedURLException;
import java.net.URL;
import android.app.Activity;
import android.os.Bundle;
import android.os.Environment;
import android.util.Log;
import android.view.Menu;
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
DownloadFiles();
}
public void DownloadFiles(){
try {
URL u = new URL("http://www.qwikisoft.com/demo/ashade/20001.kml");
InputStream is = u.openStream();
DataInputStream dis = new DataInputStream(is);
byte[] buffer = new byte[1024];
int length;
FileOutputStream fos = new FileOutputStream(new File(Environment.getExternalStorageDirectory() + "/" + "data/test.kml")); …
Run Code Online (Sandbox Code Playgroud) 可能重复:
谷歌地图输出= kml坏了吗?
几天后,当我尝试使用KML数据检索Google方向时,我开始出现错误.错误似乎我请求的URL不再返回KML数据,它返回整页.为此,我遵循了这一点.
这是什么解决方案?还有其他选择吗?
我是KML格式的新手,并试图弄清楚如何显示一条船(一个png),沿着一条路径从一个地方移动到另一个地方(一条由几条线组成的简单线条).
我可以看到如何分别显示地标,即使是图标和路径.
点击KML文件时我想看到的是:
这甚至可能吗?我知道这是谷歌地图,但你可以使用Javascript编程,这可以减轻很多事情.
我已将KML文件加载到Android设备上.将KML文件的叠加层加载到Google地图的最简单机制是什么?我不想将KML文件上传到网络,而是宁愿在本地打开它.
如何在kml文件中指定谷歌地图的缩放级别,或者为什么加载此文件时我的缩放级别会被覆盖.我的问题实际上是如何控制以下链接的地图缩放:
http://code.google.com/apis/maps/documentation/javascript/examples/layer-kml-features.html
所有
我在我的iPhone应用程序中使用谷歌地图KML输出.如果我在浏览器上键入以下内容,它会提供一个保存kml文件的选项:
http://maps.google.com/maps?q=restaurant&mrt=yp&num=10&sll=37.786945,-122.406013&radius=5&output=kml
Run Code Online (Sandbox Code Playgroud)
但是今天突然间,它正在返回一个html文件.发生了什么?有任何想法吗?我在我的iPhone应用程序中使用它并抛出错误,因为它不是有效的xml返回.明显....
谢谢,恩