2010-10-20 20 views

Respuesta

8

Encuentre aquí un ejemplo de código que obtiene los datos KML de Google y la dibuja en el mapa:

How to draw a path on a map using kml file?

+0

@Mathias ... ¡muchas gracias! pero si puedo preguntarte. ¿Hay alguna manera de acceder al kml desde la tarjeta sd del teléfono? el kml que estoy usando nunca cambiará. así que no tiene sentido recibirlo del servidor cada vez que enciendes la aplicación. gracias de nuevo –

+0

seguro, puedes ponerlo en un archivo de texto y leerlo a través de los métodos regulares java.io.file –

+0

así que dices ... Necesito copiar el contenido kml en un archivo de texto y analizarlo usando el método io .. (tokenizer de cuerda y cosas por el estilo)? ¿no es posible almacenar el kml en el teléfono y usar el analizador de sax para analizarlo? –

0

que utilizan archivos GPX en un mapa (Android 1.5), pero no había nada para cargar KML o GPX. Si no se agregó en las versiones más recientes de Android, supongo que debe leer el archivo por su cuenta. Eso es lo que hice hace 10 meses ...

3

Hace varios meses estaba buscando una función similar, pero no pude encontrar una manera de cargar un archivo desde la tarjeta SD, o incluso usando un proveedor de contenido. No he buscado desde entonces.

Sin embargo un método vi, que resultó útil como ya estaba comunicando con un servidor web

getting maps to accept a dynamically generated KML file?

Esto me permitió enviar el KML de mi aplicación al servidor (comunicándose ya estaba en su lugar), el servidor almacena el archivo KML, asignada una cadena aleatoria, y lo devolvió a la aplicación, la aplicación y luego pasó un enlace con el servidor en el estilo:

final Intent myIntent = new Intent(android.content.Intent.ACTION_VIEW, 
Uri.parse("geo:0,0?q=http://website.com/kml_gen.php?id=1kj312")); 
startActivity(myIntent); 

el servidor ha devuelto una Lista de KML para que la use la aplicación de mapas.

una actualización después de comentarios a continuación:

final Intent myIntent = new Intent(android.content.Intent.ACTION_VIEW, 
Uri.parse("geo:0,0?q=http://code.google.com/apis/kml/documentation/KML_Samples.kml")); 
startActivity(myIntent); 

Intente ejecutar el código anterior - verá cuando se ejecuta, se abre el mapa aplicación de Google, y se solicitará el archivo KML, en este caso el archivo de muestras de google. Este es un mapa con una superposición, pero ahora es la aplicación de mapas de Google y ya no se ejecuta dentro de su aplicación.

Para esta solución, necesitaría almacenar su archivo KML en un servidor web en alguna parte; tiene un pequeño problema porque el usuario necesita una conexión de datos (que el mapa necesitaría de todos modos) pero si el archivo kml es grande y la conexión es lenta, tal vez haya una demora).

Mencionaste que tenías un servidor que producía algunos datos dinámicos y también algunas cosas estáticas. Si las cosas estáticas son las mismas para todos y cada vez que un servidor produce algunos datos, me sentiría tentado de que el servidor web produzca un documento KML bien formateado que incluya ambos conjuntos de datos: la aplicación Google Maps, hasta donde yo sé, solo cargue un archivo KML de un servidor web.

La otra solución, que es una que he usado ha sido publicada anteriormente; si tiene los datos estáticos en el teléfono (yo iría con un DB con los datos), cree una superposición dibujando los elementos, y también solicite los resultados dinámicos del servidor, agréguelos a la superposición personalizada. Esta opción significa que usted tendrá que codificar cualquier función adicional que usted quiere - es decir, buscar el mapa de ubicación, vista satélite ..... Asegúrese de realizar la operación en un hilo separado y no el hilo de interfaz de usuario, especialmente en la construcción grandes superposiciones o es probable que obtenga un cuadro de diálogo Forzar cierre/Espera.

+0

@Scoobler ... gracias por eso. Entonces, ¿cómo puedo sobreponer este archivo kml en el mapa de google? –

+0

@raqz ¿qué quieres decir exactamente?¿Tiene un archivo kml que desea superponer en el mapa, o tiene un conjunto de coordenadas y está buscando una forma de mostrarlas en un mapa, es decir, está creando un archivo kml de forma dinámica? – Scoobler

+0

@Scoobler ... Tengo un archivo kml cuyos datos son constantes. Necesito trazar esas geometrías en el kml en el mapa, es decir; superponer eso en el mapa de google. Además, tengo otro archivo kml que se genera dinámicamente en el servidor y tengo que mostrar lo mismo en el teléfono. entonces la estructura sería, primero el mapa de google, el próximo archivo kml constante y luego, finalmente, encima de ambos estos ... es el kml generado dinámicamente. hay una manera de hacerlo Realmente agradezco tu ayuda ... gracias –

Cuestiones relacionadas